linux自動ssh
A. 【linux】SSH 使用密碼/公鑰遠程登錄總結
本文是筆者查閱網上資料做的總結,關於SSH原理,什麼是對稱加密和非對稱加密,本文不過多介紹。這里介紹一下SHH的工作過程、配製方法,可能出現的問題及解決方法。
說明:本文中涉及的例子,SSH客戶端為:本地主機A,SSH伺服器為:伺服器B
SSH協議採用C-S(客戶端-伺服器端)架構進行雙方的身份驗證以及數據的加密。
伺服器端組件監聽指定的埠,負責安全連接的建立、對連接方的身份認證、以及為通過身份認證的用戶建立正確的環境。
客戶端負責發起最初的TCP握手、安全連接的建立、驗證伺服器的身份與之前記錄中的一致、並將自己的驗證信息提供給伺服器。
一個SSH會話的建立過程分為兩個階段。第一階段,雙方溝通並同意建立一個加密連接通道以供後續信息傳輸用。第二階段,對請求接入的用戶進行身份驗證以確定伺服器端是否要給該用戶開放訪問許可權。
當客戶端發起TCP連接時,伺服器端返回信息說明自己支持的協議版本,如果客戶端上支持的協議與之匹配,則連接繼續。伺服器會提供自己的公共主機密鑰(public host key)以讓客戶端確認自己訪問的是正確的機器。
然後,雙方採用一種Diffie-Hellman演算法共同為該會話建立密鑰。每一方的一部分私有數據,加上來自對方的一部分公共數據,通過這種演算法計算,能夠得出完全相同的密鑰用於本次會話。
整個會話的通訊內容都使用該密鑰進行加密。這個階段使用的公鑰/私鑰對與用戶驗證身份用的SSH密鑰是完全無關的。
經典Diffie-Hellman演算法的計算步驟如下:
這個共享密鑰的加密方式被稱為二進制數據包協議(binary packet protocol)。該過程能夠讓雙方平等的參與密鑰生成的過程,而不是由單方掌握。這種共享密鑰生成的過程是安全的,雙方沒有交換過任何未經加密的信息。
生成的密鑰是對稱式密鑰,一方用於加密信息的密鑰等同於另一方用於解密信息的密鑰,而任何第三方由於不持有該密鑰,是無法解密雙方傳遞的內容的。
會話加密通道建立後,SSH開始進入用戶認證階段。
下一步,伺服器驗證用戶身份以決定是否准許其訪問。驗證有不同的方式,選擇的驗證方式取決於伺服器的支持。
最簡單的驗證是密碼驗證:伺服器要求客戶端輸入密碼,客戶端輸入的密碼經過上述的通道加密傳輸給伺服器。
雖然密碼是加密過的,然而該方法仍然不被推薦,因為用戶經常為了省事而使用過於簡單的密碼,而這類密碼很容易就能夠被自動化腳本破解。
最流行的驗證方式是SSH密鑰對,這也是當前最推薦的方式。SSH密鑰對是非對稱密鑰,私鑰和公鑰分別用於不同的功能。
公鑰用於加密,而私鑰用於解密。公鑰可以隨意上傳、共享,因為公鑰的流通並不會危及到私鑰的保密性。
SSH密鑰對的驗證過程起始於上一部分加密通道建立之後,其具體執行步驟如下:
簡單來說,伺服器端用公鑰加密信息,客戶端用私鑰解密信息以證明自己持有私鑰。該過程同時使用了對稱加密和非對稱加密,兩種方式各有自己的功用。
命令如下:
用戶名:為要登錄的伺服器B中已存在的用戶賬戶名
IP地址:為伺服器B的IP地址
-p 埠號:用來指定埠號,默認為22
第一次登錄時,會提示如下提示:
大概意思是說,你正在訪問的主機不能驗證它的真實性,它的RSA key(當前訪問主機的公鑰)指紋是怎樣的,你確定要繼續連接嗎?
輸入yes繼續,會提示,已永久把當前訪問主機的RSA key添加到了已知主機文件(用戶目錄下,.ssh 文件夾中的knwon_hosts文件)中。之後再次 SSH 登錄就不再有該提示了。
接著,輸入登錄賬戶的密碼即可。
SSH 密碼登錄,需要伺服器開啟密碼驗證許可權,編輯伺服器SSH配置命令如下:
在 sshd_config 文件中,Protocol 2 下面 #PasswordAuthentication yes,將前面的#號去掉,保存退出。
公鑰登錄,即免密碼登錄。避免的每次登錄都要輸入的麻煩,也防止了中間人攻擊。是SSH遠程登錄最常用的登錄方式。
提示輸入密鑰對名稱,直接回車,使用默認名稱即可;
提示輸入密碼(使用私鑰時,要輸入密碼),直接回車,不使用密碼即可。
首先,登錄伺服器B,在進行下面的操作。
找到 #PubkeyAuthentication yes,刪除 #號,保存退出。
重啟 ssh 服務
也可指定驗證私鑰:
本地主機A,生成密鑰對後:
sudo vim /etc/selinux/config
B. linux下怎麼使SSH服務開機自動運行
如果你用的是redhat的linux,圖形界面里,找到system→administration→server settings→services,有個sshd的服務,打上勾就可以了。
命令行的話,用chkconfig --add sshd 然後重啟下機器就可以了
C. linux的ssh怎麼設置的
配置客戶端的軟體OpenSSH 有三種配置方式:命令行參數、用戶配置文件和系統級的配置文件("/etc/ssh/ssh_config")。命令行參數優先於配置文件,用戶配置文件優先於系統配置文件。所有的命令行的參數都能在配置文件中設置。因為在安裝的時候沒有默認的用戶配置文件,所以要把 "/etc/ssh/ssh_config"拷貝並重新命名為"~/.ssh/config"。標準的配置文件大概是這樣的:[lots of explanations and possible options listed]# Be paranoid by defaultHost *ForwardAgent noForwardX11 noFallBackToRsh no還有很多選項的設置可以用"man ssh"查看"CONFIGURATION FILES"這一章。配置文件是按順序讀取的。先設置的選項先生效。假定你在 www.foobar.com上有一個名為"bilbo"的帳號。而且你要把"ssh-agent"和"ssh-add"結合起來使用並且使用數據壓縮來加快傳輸速度。因為主機名太長了,你懶得輸入這么長的名字,用"fbc"作為" www.foobar.com"的簡稱。你的配置文件可以是這樣的:Host *fbcHostName www.foobar.comUser bilboForwardAgent yesCompression yes# Be paranoid by defaultHost *ForwardAgent noForwardX11 noFallBackToRsh no你輸入"ssh fbc"之後,SSH會自動地從配置文件中找到主機的全名,用你的用戶名登錄並且用"ssh-agent"管理的密匙進行安全驗證。這樣很方便吧!用SSH連接到其它遠程計算機用的還是"paranoid(偏執)"默認設置。如果有些選項沒有在配置文件或命令行中設置,那麼還是使用默認的"paranoid"設置。在我們上面舉的那個例子中,對於到 www.foobar.com的SSH連接:"ForwardAgent"和"Compression"被設置為 "Yes";其它的設置選項(如果沒有用命令行參數)"ForwardX11"和"FallBackToRsh"都被設置成"No"。其它還有一些需要仔細看一看的設置選項是:l CheckHostIP yes這個選項用來進行IP地址的檢查以防止DNS欺騙。l CompressionLevel壓縮的級別從"1"(最快)到"9"(壓縮率最高)。默認值為"6"。l ForwardX11 yes為了在本地運行遠程的X程序必須設置這個選項。l LogLevel DEBUG當SSH出現問題的時候,這選項就很有用了。默認值為"INFO"。配置服務端的軟體SSH伺服器的配置使用的是"/etc/ssh/sshd_config"配置文件,這些選項的設置在配置文件中已經有了一些說明而且用"man sshd"也可以查看幫助。請注意OpenSSH對於SSH 1.x和2.x沒有不同的配置文件。在默認的設置選項中需要注意的有:l PermitRootLogin yes最好把這個選項設置成"PermitRootLogin without-password",這樣"root"用戶就不能從沒有密匙的計算機上登錄。把這個選項設置成"no"將禁止"root"用戶登錄,只能用"su"命令從普通用戶轉成"root"。l X11Forwarding no把這個選項設置成"yes"允許用戶運行遠程主機上的X程序。就算禁止這個選項也不能提高伺服器的安全因為用戶可以安裝他們自己的轉發器(forwarder),請參看"man sshd"。l PasswordAuthentication yes把這個選項設置為"no"只允許用戶用基於密匙的方式登錄。這當然會給那些經常需要從不同主機登錄的用戶帶來麻煩,但是這能夠在很大程度上提高系統的安全性。基於口令的登錄方式有很大的弱點。l # Subsystem /usr/local/sbin/sftpd把最前面的#號去掉並且把路徑名設置成"/usr/bin/sftpserv",用戶就能使用"sftp"(安全的FTP)了(sftpserv在 sftp 軟體包中)。因為很多用戶對FTP比較熟悉而且"scp"用起來也有一些麻煩,所以"sftp"還是很有用的。而且2.0.7版本以後的圖形化的ftp工具"gftp"也支持"sftp"。
D. linux怎麼寫腳本讓自動登錄SSH或者telnet
使用expecte腳本可以實現此命令;網路以下expecte的寫法;
E. 解決Linux SSH連接容易斷開的問題
基於安全的考慮,如果用戶連接到SSH Server後閑置一段時間,SSH Server會在超過特定時間後自動終止SSH連接。
若希望保持SSH長時間連接,可以做以下修改:
1、編輯ssh配置文件(注意不是「ssh_config")
# vim /etc/ssh/sshd_config
加入以下參數保存:
2、重啟sshd生效:
systemctl restart sshd
實踐環境:阿里雲 CentOS 8.3
F. Linux系統啟用SSH該如何操作
/etc/init.d/sshd start 手動啟動。
主要還是看你的發行版。你沒有說,所以沒辦法詳細的回答。
shhd 需要確定安裝上了。
之後你要是讓開機自動運行,需要找服務管理程序,設置這個服務自動運行就行了。
G. linux 怎麼開機自動啟動ssh
如果你說的是sshd service的話
可以用chkconfig設置
chkconfig sshd on
H. 如何配置使linux啟動後ssh服務自動啟動
如果你用的是redhat的linux,圖形界面里,找到system→administration→server settings→services,有個sshd的服務,打上勾就可以了。 命令行的話,用chkconfig --add sshd 然後重啟下機器就可以了
I. linux下怎麼使SSH服務開機自動運行
1、啟動Linux並登錄到系統。
J. Linux如何開機啟動啟動ssh服務
1、通過ntsysv 自啟動ssh服務
在終端中輸入setup回車運行ntsysv,選中"system serivce",回車進入後,定位到sshd服務,空格鍵選中,TAB鍵選擇」OK「後依次退出,如下圖所示: