ssh(secure shell)是一種提供網路安全的傳輸協議。它保證了在網路上的資料並非明文傳輸,目前使用ssh登入遠端終端已經是通用方式。
ssh登入時有兩種驗證方式
基於密碼的安全驗證,它要求使用者在每次登入伺服器時輸入密碼,伺服器端驗證通過後即登入成功。
基於金鑰的安全驗證,客戶端的公鑰會預先儲存在伺服器端,當登入時,伺服器端會使用該公鑰做驗證,如果驗證成功,使用者不需輸入密碼即完成登入。
為了避免每次都輸入密碼這種重複性工作,我們選擇第二種方式進行遠端登入。
在本地終端生成金鑰對。
ssh-keygen // 加密方式預設使用rsa,可以通過 「ssh-keygen -t 加密方式」 指定加密方式
生成過程中會詢問設定金鑰對的儲存位置和開啟密碼。按enter鍵使用預設設定即可。此時會在本地的"~/.ssh"目錄下生成名為id_rsa和id_rsa.pub的私鑰檔案和公鑰檔案。
將公鑰字串copy到遠端伺服器的"~/.ssh/authorized_keys"檔案內。
方法一:手動複製
// ssh登入伺服器之後,修改檔案:
vi ~/.ssh/authorized_keys
// 將公鑰字串拷貝到authorized_keys檔案
// 如果.ssh目錄尚未建立,需要先建立並且新增許可權
mkdir ~/.ssh
chmod 700 ~/.ssh
// 如果authorized_keys檔案是新建立的,需增加讀寫許可權
chmod 600 ~/.ssh/authorized_keys
ssh-copy-id user@host
驗證是否設定成功
ssh username@server-ip
此時應該能夠跳過輸入密碼的提示,直接登入到遠端終端。如果仍然需要輸入密碼,最有可能的原因是上面第三步檔案許可權配置的有問題。
雖然經過上面的配置,我們不用在每次登入時都輸入密碼。當仍然需要我們輸入使用者名稱和伺服器ip。有沒有可能把這一步驟也省略呢?答案是肯定的,通過配置伺服器別名的方式,登入時只需輸入別名即可。
開啟~/.ssh/config檔案,新增以下內容:
host server-alias # server-alias為ssh鏈結的伺服器別名
hostname server-ip # 伺服器位址
port 22
user username # 伺服器端使用者名稱
preferredauthentications publickey
identityfile ~/.ssh/id_rsa # 私鑰位址,預設為 ~/.ssh/id_rsa
驗證
以後即可通過以下命令登入遠端伺服器
ssh server-alias
如果登入未成功,請仔細檢查每項的配置是否正確。
經過上述配置,有效的簡化了登入操作,會為我們節省不少時間。更重要的是,所有底層使用ssh的程式,都因此而簡化了操作步驟。比如:
用於傳輸檔案的scp和rsync命令。只需輸入:
scp file server-alias:/dir
如果伺服器端上配置了git遠端倉庫,只需輸入:
git clone server-alias:/git-repo
你會發現除了使用簡易的別名代替了ip位址外,輸入密碼的步驟也被省略掉了! SSh 免密碼登陸
有機器a 192.168.1.155 b 192.168.1.181 現想 a通過ssh免密碼登入到b。操作步驟 進入主機a的 cmd介面 1 產生金鑰,命令如下 ssh keygen t rsa p 截圖如下 在輸入上面的命令後,它會在 users chenlb 下生產.ssh 目錄,ssh 下有...
ssh免密碼登陸
1 ubuntu為當前使用者產生ssh非對稱秘鑰的方法 ssh keygen t rsa t 指定rsa加密演算法產生一對秘鑰 id rsa id rsa.pub其中id rsa為私鑰,id rsa.pub為公鑰 2 ubuntu中免密碼登陸的重要檔案 authorized keys 如果一台伺服器...
SSH免密碼登陸
當我們要ssh遠端登陸到主機時是需要輸入使用者名稱和密碼的。如果不想這樣,就需要首先在自己使用者主目錄下的.ssh目錄下生成公鑰和私鑰。然後把自己的公鑰傳送給遠端主機的authorized keys 也是主目錄的.ssh資料夾下 檔案下。這樣遠端主機的authorized keys檔案下就有了你的使...