SSH免密碼登陸和免ip連線

2021-09-29 02:56:25 字數 1784 閱讀 4162

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檔案下就有了你的使...