1. 程式人生 > >【轉】Linux系統下的ssh使用

【轉】Linux系統下的ssh使用

fall yum scp 客戶機 縮進 永久 任務 known root

對於linux運維工作者而言,使用ssh遠程遠程服務器是再熟悉不過的了!對於ssh的一些嚴格設置也關系到服務器的安全維護,今天在此,就本人工作中使用ssh的經驗而言,做一些總結記錄來下。

-bash: ssh: command not found 解決辦法; yum install -y openssh-server openssh-clinets

(0)ssh登錄時提示:Read from socket failed: Connection reset by peer. 嘗試了很多解決方案均無效,無奈!卸載sshd,然後重新安裝 # yum remove openssh* # rm -rf /etc/ssh* # yum install -y openssh* # systemctl start sshd.service

(1)ssh遠程登陸後的提示信息,標題信息 我們經常會使用中控機ssh信任跳轉到其他機器上,但是不知道有沒有運維朋友註意到ssh跳轉成功後的終端顯示的提示信息? 這些提示信息,是為了方便我們在第一時間知道ssh跳轉到哪臺目標機上,也是為了避免長期頻繁跳轉後由於大意造成的誤入機器操作的風險,我們通常會在ssh跳轉到目標機器後顯示一些提示信息,在一些國家, 登入給定系統前, 給出未經授權或者用戶監視警告信息, 將會受到法律的保護.如下: [root@bastion-IDC ~]# ssh -p22 192.168.1.15 Last login: Fri Jul 15 13:26:53 2016 from 124.65.197.154 =================================== ||||||||||||||||||||||||||||||||||| =================================== HOSTNAME: monit-server IPADDRES: 192.168.1.15 =================================== IDC監控機 ===================================

那麽上面紅色區域的提醒信息是在哪設置的呢? 做法一:其實很簡單,這些信息是在目標機器的/etc/motd文件裏自定義的 [root@monit-server ~]# cat /etc/motd =================================== ||||||||||||||||||||||||||||||||||| =================================== HOSTNAME: monit-server IPADDRES: 192.168.1.15 =================================== IDC監控機 ===================================

做法二:在目標機器的/etc/ssh/sshd_config文件裏定義,然後重啟sshd服務即可。這兩種做法是一致的效果! Banner /etc/sshfile

[root@host-192-168-1-117 ~]# cat /etc/sshfile this is 192.168.1.117

遠程登陸: [root@linux-node2 ~]# ssh 192.168.1.117 this is 192.168.1.117 [root@host-192-168-1-117 ~]#

(2)實現SSH無密碼登錄:使用ssh-keygen和ssh-copy-id ssh-keygen 產生公鑰與私鑰對. ssh-copy-id 將本機的公鑰復制到遠程機器的authorized_keys文件中,ssh-copy-id也能讓你有到遠程機器的/home/username/.ssh和~/.ssh/authorized_keys的權利. 操作記錄: 1)第一步:在本地機器上使用ssh-keygen產生公鑰私鑰對 #ssh-keygen -t rsa //一路默認回車 這樣就會在當前用戶家目錄下的.ssh目錄裏產生公鑰和私鑰文件:id_rsa.pub、id_rsa。可以將id_rsa.pub公鑰文件復制成authorized_keys 2)第二步:可以手動將本機的id_rsa.pub公鑰文件內容復制到遠程目標機的.ssh/authorized_keys文件中,可以就可以實現ssh無密碼登陸。 當然,也可以在本機直接使用ssh-copy-id將公鑰復制到遠程機器中 #ssh-copy-id -i /root/.ssh/id_rsa.pub user@ip [把本機的公鑰拷貝到遠程機器上,比如B機器] 也可以不加公鑰路徑,會默認加上 #ssh-copy-id user@ip 註意: ssh-copy-id 將key寫到遠程機器的 ~/ .ssh/authorized_key.文件(文件會自動創建)中

?
1 2 對於非22端口(比如22222)情況下的ssh-copy-id的使用,需要這樣用: ssh-copy-id -i /root/.ssh/id_rsa.pub ‘-p 22222 [email protected]

3)這樣,本機登錄到上面遠程機器(B機器)就不用輸入密碼 #ssh user@ip

(3)ssh登錄失敗,報錯:Pseudo-terminal will not be allocated because stdin 現象: 需要登錄線上的一臺目標機器A,但是不能直接登錄(沒有登錄權限),需要先登錄B機器,然後從B機器跳轉到A機器。 腳本如下: localhost:~ root# cat IDC-7.sh #!/bin/bash ssh [email protected] "ssh -p25791 [email protected]"

但是在執行腳本的時候報錯如下: Pseudo-terminal will not be allocated because stdin

原因: 偽終端將無法分配,因為標準輸入不是終端。 解決辦法: 需要增加-t -t參數來強制偽終端分配,即使標準輸入不是終端。 在腳本裏添加-t -t參數即可,如下: localhost:~ root# cat IDC-7.sh #!/bin/bash ssh [email protected] "ssh -t -t -p25791 [email protected]"

或者 localhost:~ root# cat IDC-7.sh #!/bin/bash ssh -t [email protected] "ssh -t -t -p25791 [email protected]"

(4)ssh遠程登陸緩慢問題 解決辦法: 編譯/etc/ssh/sshd_config配置文件: UseDNS no GSSAPIAuthentication no 然後重啟sshd服務即可!

(5)ssh登錄出現:permission denied(publickey.gssapi-with-mic) 解決方法: 修改/etc/ssh/sshd-config文件,將其中的: PermitRootLogin no修改為yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys前面加上#屏蔽掉 PasswordAuthentication no修改為yes 最後重啟sshd服務即可!

(6)ssh連接錯誤問題 1)在使用ssh或scp或rsync遠程連接的時候,出現如下報錯: Address **** maps to localhost, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT! 解決方法: 修改本機ssh_config文件 [root@kvmserver ~]# vim /etc/ssh/ssh_config GSSAPIAuthentication no [root@kvmserver ~]#/etc/init.d/sshd restart

問題迎刃而解~~

2)本機scp、rsync命令都已具備,但是在使用scp或rsync遠程同步的時候報錯: bash: scp: command not found bash: rsync: command not found 原因:是由於遠程機器上沒有安裝scp或rsync造成的!安裝這兩個命令即可~ yum install openssh-clients yum install rsync

3)遠程ssh連接時錯誤“ The X11 forwarding request was rejected!” 解決方法: 將sshd_config中 設置 X11Forwarding yes 重啟sshd服務。

(7)ssh連接超時被踢出問題解決 當使用xshell,SecureCRT等客戶端訪問linux服務器,有時候會出現終端定期超時被踢出的情況。 下面介紹三種方法來防止超時被踢出的方法,後兩種情況的設置方法以及通過設置shell變量來達到此目的的方法:

1、 配置服務器 #vi /etc/ssh/sshd_config 1)找到 ClientAliveInterval參數,如果沒有就自己加一行 數值是秒,比如你設置為120 ,則是2分鐘 ClientAliveInterval 120 2)ClientAliveCountMax 指如果發現客戶端沒有響應,則判斷一次超時,這個參數設置允許超時的次數。如3 、5等自定義

修改兩項參數後如下: ---------------------------- ClientAliveInterval 120 ClientAliveCountMax 3 //0 不允許超時次數 修改/etc/ssh/sshd_config文件,將 ClientAliveInterval 0和ClientAliveCountMax 3的註釋符號去掉,將ClientAliveInterval對應的0改成60,沒有就自己輸入。 ClientAliveInterval指定了服務器端向客戶端請求消息 的時間間隔, 默認是0, 不發送.而ClientAliveInterval 60表示每分鐘發送一次, 然後客戶端響應, 這樣就保持長連接了.ClientAliveCountMax, 使用默認值3即可.ClientAliveCountMax表示服務器發出請求後客戶端沒有響應的次數達到一定值, 就自動斷開. 正常情況下, 客戶端不會不響應. 重新加載sshd服務。退出客戶端,再次登陸即可驗證。 3)重啟sshd service sudo /etc/init.d/ssh restart

2、 配置客戶端 #vim /etc/ssh/ssh_config 然後找到裏面的 ServerAliveInterval 參數,如果沒有你同樣自己加一個就好了 參數意義相同,都是秒數,比如5分鐘等 ServerAliveInterval 300

3、echo export TMOUT=1000000 >> /root/.bash_profile; source .bash_profile 在Linux 終端的shell環境中通過設置環境變量TMOUT來阻止超時。如果顯示空白,表示沒有設置, 等於使用默認值0, 一般情況下應該是不超時. 如果大於0, 可以在如/etc/profile之類文件中設置它為0.

(8)ssh遠程登陸,公鑰授權不通過:Permission denied (publickey,gssapi-keyex,gssapi-with-mic). 公司IDC機房服務器,之前做了跳板機環境,其他機器只允許從跳板機ssh無密碼信任過去,並且在信任關系做好後,禁用了其他機器的密碼登陸功能(sshd_config文件裏設置“PermitEmptyPasswords no”)

後來跳板機出現了問題,打算重裝這臺機器,重裝前取消了其他機器裏只允許跳板機ssh信任關系,並且恢復了密碼登陸功能: [root@bastion-IDC ssh]# vim /etc/ssh/sshd_config PermitEmptyPasswords yes [root@bastion-IDC ssh]# service sshd restart

修改後,當時在其他機器間是可以ssh相互登陸,當時沒在意,以為一切ok了。 可是,到了第二天,再次ssh登陸時,尼瑪,居然報錯了~~ Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

最後發現是selinux惹的禍!關閉它即可。 1)臨時關閉selinux [root@bastion-IDC ssh]# setenforce 0 [root@bastion-IDC ssh]# getenforce Permissive 2)永久關閉 [root@bastion-IDC ssh]# vim /etc/sysconfig/selinux SELINUX=disabled [root@bastion-IDC ssh]# reboot #重啟系統才能生效

說明: 1)ssh可同時支持publickey和password兩種授權方式,publickey默認不開啟,需要配置為yes。 如果客戶端不存在.ssh/id_rsa,則使用password授權;存在則使用publickey授權;如果publickey授權失敗,依然會繼續使用password授權。

2)GSSAPI身份驗證. GSSAPIAuthentication 是否允許使用基於 GSSAPI 的用戶認證.默認值為"no".僅用於SSH-2. GSSAPICleanupCredentials 是否在用戶退出登錄後自動銷毀用戶憑證緩存。默認值是"yes".僅用於SSH-2. 需要特別註意的是: GSSAPI是公共安全事務應用程序接口(GSS-API) 公共安全事務應用程序接口以一種統一的模式為使用者提供安全事務,由於它支持最基本的機制和技術,所以保證不同的應用環境下的可移植性. 該規範定義了GSS-API事務和基本元素,並獨立於基本的機制和程序設計語言環境,並借助於其它相關的文檔規範實現.

如果我們在服務端打開GSSAPIAuthentication配置項,如下: [root@server ~]#vim /etc/ssh/sshd_config ........ GSSAPIAuthentication yes GSSAPICleanupCredentials yes

那麽在客戶端登錄服務端會用gssapi-keyex,gssapi-with-mic進行身份校驗,同樣客戶端也要支持這種身份驗證,如下:

[root@client ~]#vim /etc/ssh/ssh_config GSSAPIAuthentication yes GSSAPIDelegateCredentials yes

我們在客戶端連接SSH服務端,如下: ssh -v 192.168.1.11 ................. debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password

我們看到如下的信息: debug1: Unspecified GSS failure. Minor code may provide more information No credentials cache found debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password debug1: Next authentication method: gssapi-keyex debug1: No valid Key exchange context 說明SSH登錄時采用GSSAPI的方式進行身份驗證,但我們的系統不支持.

最後如果我們不用這種方式進行身份驗證的話,建議關閉這個選項,這樣可以提高驗證時的速度.

(9)ssh自定義安全設置 1)為了ssh登陸的時候加一層保護,可以修改默認端口。修改ssh服務配置文件/etc/ssh/sshd_config port 2222

這樣遠程連接時加短褲 #ssh 192.168.1.83 -p 2222

2)ssh使用時加-l後面跟用戶名,表示登陸到對方的這個用戶下面。 #ssh -l wangshibo 192.168.1.83 -p 2222 等同於 #ssh [email protected] -p 2222

3)限制ssh登陸的來源ip,白名單設置(hosts.allow優先級最高,具體參考:Linux服務器安全登錄設置記錄) 一是通過iptables設置ssh端口的白名單,如下設置只允許192.168.1.0/24網段的客戶機可以遠程連接本機 #vim /etc/sysconfig/iptables -A INPUT -s 192.168.1.0/24 -p tcp -m state --state NEW -m tcp --dport 2222 -j ACCEPT 二是通過/etc/hosts.allow裏面進行限制(如下),/etc/hosts.deny文件不要任何內容編輯,保持默認! #vim /etc/hosts.allow sshd:192.168.1.*,192.168.9.*,124.65.197.154,61.148.60.42,103.10.86.7:allow sshd:all:deny

4)僅允許特定的用戶通過SSH登陸 如不允許root用戶登錄; 只允許幾個指定的用戶登錄(比如wangshibo、guohuihui、liuxing用戶) 禁止某些指定的用戶登錄(比如zhangda,liqin用戶) 但是要註意:設置的這幾個用戶必須同時存在於本機和對方機器上 修改ssh服務配置文件/etc/ssh/sshd_config PermitRootLogin no //將yes修改為no AllowUsers wangshibo guohuihui liuxing //這個參數AllowUsers如果不存在,需要手動創建,用戶之間空格隔開 DenyUsers zhagnda liqin //這個參數DenyUsers如果不存在,需要手動創建,用戶之間空格隔開

也可以設置僅允許某個組的成員通過ssh訪問主機。 AllowGroups wheel ops

實例說明:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 1)只允許指定用戶進行登錄(白名單): /etc/ssh/sshd_config 配置文件中設置 AllowUsers 選項。格式如下: AllowUsers root grace kevin app 表示只允許grace用戶、kevin用戶通過ssh登錄本機。 AllowUsers [email protected] [email protected] [email protected] 表示只允許從192.168.10.10登錄的root用戶、從192.168.10.11登錄的app用戶、從192.168.10.13登錄的kevin用戶可以通過ssh登錄本機。 2)只拒絕指定用戶進行登錄(黑名單):) /etc/ssh/sshd_config配置文件中設置DenyUsers選項。格式如下: DenyUsers wangbo linan zhangyang 表示拒絕wangbo、linan和zhangyang用戶通過ssh登錄本機。 需要註意的是: - AllowUsers、DenyUsers跟後面的配置之間使用TAB鍵進行隔開 - 多個百名單或黑名單之間使用空格隔開 例子: [root@Centos6 ~]# cat /etc/ssh/sshd_config ....... AllowUsers [email protected] [email protected] [email protected] [root@Centos6 ~]# /etc/init.d/sshd restart [root@Centos6 ~]# cat /etc/ssh/sshd_config ....... AllowUsers root app kevin [root@Centos6 ~]# /etc/init.d/sshd restart [root@Centos6 ~]# cat /etc/ssh/sshd_config ....... DenyUsers wangbo linan zhangyang [root@Centos6 ~]# /etc/init.d/sshd restart 如下,由於已經允許了app和root登錄,則後面針對[email protected][email protected]的限制就無效了(兩者別放在一起配置) [root@Centos6 ~]# cat /etc/ssh/sshd_config ....... AllowUsers app root [email protected] [email protected] [root@Centos6 ~]# /etc/init.d/sshd restart

================================================================ 除了上面的方法可以限制ssh指定用戶登錄外,還可以使用pam規則進行設置。

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 1)允許指定的用戶(比如kevin、grace賬號)進行登錄 /etc/pam.d/sshd文件第一行加入,一定要在第一行,因為規則是自上而下進行匹配的。 auth required pam_listfile.so item=user sense=allow file=/etc/sshusers onerr=fail 然後在/etc下建立sshusers文件,編輯這個文件,加入你允許使用ssh服務的用戶名,不用重新啟動sshd服務。 最後重啟sshd服務即可! 操作如下: [root@docker-test1 ~]# vim /etc/pam.d/sshd #%PAM-1.0 auth required pam_listfile.so item=user sense=allow file=/etc/sshusers onerr=fail ........ [root@docker-test1 ~]# touch /etc/sshusers [root@docker-test1 ~]# vim /etc/sshusers kevin grace [root@docker-test1 ~]# /etc/init.d/sshd restart 2)pam規則也可以寫成deny的。比如拒絕kevin、grace賬號進行登錄 操作如下: [root@docker-test1 ~]# vim /etc/pam.d/sshd #%PAM-1.0 auth required pam_listfile.so item=user sense=deny file=/etc/sshusers onerr=succeed ........ [root@docker-test1 ~]# touch /etc/sshusers [root@docker-test1 ~]# vim /etc/sshusers kevin grace [root@docker-test1 ~]# /etc/init.d/sshd restart 3)pam規則可以使用group限制。 允許規則: auth required pam_listfile.so item=group sense=allow file=/etc/security/allow_groups onerr=fail 禁止規則: auth required pam_listfile.so item=group sense=deny file=/etc/security/deny_groups onerr=succeed 操作如下: [root@docker-test1 ~]# vim /etc/pam.d/sshd #%PAM-1.0 auth required pam_listfile.so item=group sense=allow file=/etc/security/allow_groups onerr=fail 新建一個組,組名為bobo,然後將kevin和grace添加到這個bobo組內 [root@docker-test1 ~]# groupadd bobo [root@docker-test1 ~]# gpasswd -a kevin bobo Adding user kevin to group bobo [root@docker-test1 ~]# usermod -G bobo grace [root@docker-test1 ~]# id kevin uid=1000(kevin) gid=1000(kevin) groups=1000(kevin),1002(bobo) [root@docker-test1 ~]# id grace uid=1001(grace) gid=1001(grace) groups=1001(grace),1002(bobo) /etc/security/allow_groups文件按中加入組名(註意如果不加root,則root就不能被允許登錄了) [root@docker-test1 ~]# vim /etc/security/allow_groups bobo [root@docker-test1 ~]# /etc/init.d/sshd restart 如上設置後,則只有kevin用戶能被允許登錄! 如果是禁止規則,則第一行改為下面內容: auth required pam_listfile.so item=group sense=deny file=/etc/security/deny_groups onerr=succeed

================================================================ 除此之外,禁止某些用戶ssh登錄,可以使用passwd或usermod命令進行賬號鎖定。 https://www.cnblogs.com/kevingrace/p/6109818.html

5)取消密碼驗證,只用密鑰對驗證 修改ssh服務配置文件/etc/ssh/sshd_config PasswordAuthentication no PubkeyAuthentication yes

6)給賬號設置強壯的密碼:將密碼保存到文本進行復制和粘帖就可以了 # rpm -ivh expect-5.43.0-5.1.i386.rpm| yum -y install expect # mkpasswd -l 128 -d 8 -C 15 -s 10 //將下面密碼保存到文本進行復制、粘貼即可 lVj.jg&sKrf0cvtgmydqo7qPotxzxen9mefy?ej!kcaX2gQrcu2ndftkeamllznx>iHikTagiVz0$cMtqOcIypkpd,vvD*kJhs3q@sb:CiCqgtqdqvse5lssfmranbtx 參數說明: -l 密碼長度 -d 多少個數字 -C 大寫字母個數 -s 特殊符號的個數

7)只允許通過指定的網絡接口來訪問SSH服務,(如果本服務器有多個IP的時候) 仍然是修改/etc/ssh/sshd_config,如下: ListenAddress 192.168.1.15 //默認監聽的是0.0.0.0

這樣,就只允許遠程機器通過ssh連接本機的192.168.1.15內網ip來進行登陸了。

8)禁止空密碼登錄 如果本機系統有些賬號沒有設置密碼,而ssh配置文件裏又沒做限制,那麽遠程通過這個空密碼賬號就可以登陸了,這是及其不安全的! 所以一定要禁止空密碼登陸。修改/etc/ssh/sshd_config,如下: PermitEmptyPasswords no //這一項,默認就是禁用空密碼登陸

9) ssh_config和sshd_config ssh_config和sshd_config都是ssh服務器的配置文件,二者區別在於,前者是針對客戶端的配置文件,後者則是針對服務端的配置文件。兩個配置文件都允許你通過設置不同的選項來改變客戶端程序的運行方式。sshd_config的配置一般都比較熟悉,下面單獨說下ssh_config針對客戶端的配置文件:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 [root@dns01 dns_rsync]# cat /etc/ssh/ssh_config # Site-wide defaults for various options Host * ForwardAgent no ForwardX11 no RhostsAuthentication no RhostsRSAAuthentication no ? RSAAuthentication yes PasswordAuthentication yes FallBackToRsh no UseRsh no BatchMode no CheckHostIP yes StrictHostKeyChecking no IdentityFile ~/.ssh/identity Port 22 Cipher blowfish EscapeChar ~ 下面對上述選項參數逐進行解釋: # Site-wide defaults for various options 帶“#”表示該句為註釋不起作,該句不屬於配置文件原文,意在說明下面選項均為系統初始默認的選項。說明一下,實際配置文件中也有很多選項前面加有“#”註釋,雖然表示不起作用,其實是說明此為系統默認的初始化設置。 Host * "Host"只對匹配後面字串的計算機有效,“*”表示所有的計算機。從該項格式前置一些可以看出,這是一個類似於全局的選項,表示下面縮進的選項都適用於該設置,可以指定某計算機替換*號使下面選項只針對該算機器生效。 ForwardAgent no "ForwardAgent"設置連接是否經過驗證代理(如果存在)轉發給遠程計算機。 ForwardX11 no "ForwardX11"設置X11連接是否被自動重定向到安全的通道和顯示集(DISPLAY set)。 RhostsAuthentication no "RhostsAuthentication"設置是否使用基於rhosts的安全驗證。 RhostsRSAAuthentication no "RhostsRSAAuthentication"設置是否使用用RSA算法的基於rhosts的安全驗證。 RSAAuthentication yes "RSAAuthentication"設置是否使用RSA算法進行安全驗證。 PasswordAuthentication yes "PasswordAuthentication"設置是否使用口令驗證。 FallBackToRsh no "FallBackToRsh"設置如果用ssh連接出現錯誤是否自動使用rsh,由於rsh並不安全,所以此選項應當設置為"no" UseRsh no "UseRsh"設置是否在這臺計算機上使用"rlogin/rsh",原因同上,設為"no" BatchMode no "BatchMode":批處理模式,一般設為"no";如果設為"yes",交互式輸入口令的提示將被禁止,這個選項對腳本文件和批處理任務十分有用。 CheckHostIP yes "CheckHostIP"設置ssh是否查看連接到服務器的主機的IP地址以防止DNS欺騙。建議設置為"yes" StrictHostKeyChecking no "StrictHostKeyChecking"如果設為"yes"ssh將不會自動把計算機的密匙加入"$HOME/.ssh/known_hosts"文件,且一旦計算機的密匙發生了變化,就拒絕連接。 IdentityFile ~/.ssh/identity "IdentityFile"設置讀取用戶的RSA安全驗證標識。 Port 22 "Port"設置連接到遠程主機的端口,ssh默認端口為22。 Cipher blowfish “Cipher”設置加密用的密鑰,blowfish可以自己隨意設置。 EscapeChar ~ “EscapeChar”設置escape字符。 ====================================================== 比如說,A機器的ssh端口是22,B機器的端口是22222,一般來說A機器ssh連接B機器的時候是使用-p22222指定端口。但是可以修改A機器的/etc/ssh/ssh_config文件中的 Port為22222,這樣A機器ssh連接的時候就默認使用22222端口了。

centos7下修改ssh默認的22端口後,出現重啟ssh失敗的現象。可能原因: selinux沒有關閉 # setenforce 0 # sed -i ‘s/SELINUX=enforcing/SELINUX=disabled‘ /etc/sysconfig/selinux # reboot

修改ssh端口後,遠程ssh連接不上。可能原因: firewalld防火墻沒有關閉,默認的22端口是開啟的,如果防火墻沒有關閉,則ssh修改後的新端口是不通的。 # systemctl stop firewalld # systemctl disable firewalld # firewall-cmd --state

-------------------------------------------去掉SSH公鑰檢查的方法(交互式yes/no)------------------------------------------------

SSH公鑰檢查是一個重要的安全機制,可以防範中間人劫持等黑客攻擊。但是在特定情況下,嚴格的 SSH 公鑰檢查會破壞一些依賴SSH協議的自動化任務,就需要一種手段能夠繞過SSH的公鑰檢查。 SSH連接遠程主機時,會檢查主機的公鑰。如果是第一次連接該主機,會顯示該主機的公鑰摘要,彈出公鑰確認的提示,提示用戶是否信任該主機(Yes/no)。當選擇Yes接受,就會將該主機的公鑰追加到文件 ~/.ssh/known_hosts 中。當再次連接該主機時,就不會再提示該問題了。 SSH公鑰檢查有好處,但首次連接時會導致某些自動化任務中斷,或者由於 ~/.ssh/known_hosts 文件內容清空,導致自動化任務中斷。

去掉SSH公鑰檢查的方法: 1)SSH客戶端的StrictHostKeyChecking 配置指令,可以實現當第一次連接服務器時,自動接受新的公鑰。只需要修改 /etc/ssh/ssh_config 文件,包含下列語句: StrictHostKeyChecking no

2)或者在ssh連接命令中使用-oStrictHostKeyChecking=no參數 [root@puppet ~]# ssh -p22222 172.168.1.33 -oStrictHostKeyChecking=no 或者 [root@puppet ~]# ssh -p22222 172.168.1.33 -oUserKnownHostsFile=/dev/null -oStrictHostKeyChecking=no

====================ansible中取消ssh交換式yes/no================== 配置文件/etc/ansible/ansible.cfg的[defaults]中(打開註釋) # uncomment this to disable SSH key host checking host_key_checking = False

=========================設置終端登錄超時時間====================

?
1 2 3 4 5 6 7 遠程登錄linux服務器,如何設置終端失效時間(即過了多久不操作,終端即將失效)。方法如下: [root@mq-console-nameserver ~]# vim /etc/profile ...... export TMOUT=600 [root@mq-console-nameserver ~]# source /etc/profile 如上設置後,登錄這臺服務器的終端在10分鐘內不做操作,則該終端就將失效!

=======================SSH服務啟動報錯案例======================= 在某臺服務器上部署了sftp服務,最後發現sftp遠程登錄正常,但是ssh遠程登錄失敗(盡管已經輸入了正確的用戶名和密碼)。

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 [root@kevin ssh]# service sshd restart Stopping sshd: [ OK ] Starting sshd:/etc/ssh/sshd_config line 81: Unsupported option GSSAPIAuthentication /etc/ssh/sshd_config line 83: Unsupported option GSSAPICleanupCredentials Starting sshd: [ OK ] 如上啟動後,遠程ssh登錄這臺機器,輸入正確的用戶名和密碼,則會登錄失敗!! [root@kevin ssh]# ssh -V OpenSSH_7.6p1, OpenSSL 1.0.1e-fips 11 Feb 2013 原因是新版本的openssh不支持以上參數,需要修改sshd的配置文件。 修改內容如下,否則還是無法通過ssh登錄這臺服務器: [root@kevin ssh]# vim /etc/ssh/sshd_config ....... ##去掉前面的註釋,允許root通過ssh登錄 PermitRootLogin yes ##註釋掉下面三個參數 #GSSAPIAuthentication yes #GSSAPICleanupCredentials yes #UsePAM yes 再次重啟ssh,上面的報錯信息就沒有了。此時遠程ssh登錄就OK了! [root@kevin ssh]# service sshd restart Stopping sshd: [ OK ] Starting sshd: [ OK ]

【轉】Linux系統下的ssh使用