一、SSH互信配置
在一個分散式的系統中,需要在不同的機器之間進行通信和文件的傳輸,SSH互信是一個很好的工具。它可以讓某一個機器上的用戶能夠在無需輸入密碼的情況下,登錄另一個遠程機器。
首先,在每個機器上都需要安裝SSH(server/client),這裡以Ubuntu系統為例(以下命令需在終端中執行)
sudo apt-get update sudo apt-get install openssh-server
安裝完成後,需要修改/etc/ssh/sshd_config文件:
sudo vim /etc/ssh/sshd_config
將PasswordAuthentication改為no
PasswordAuthentication no
重啟SSH服務:
sudo service ssh restart
配置完成後,在A機器上生成公鑰
ssh-keygen -t rsa
之後一直按Enter,如果遇到要輸入密碼的地方,可以直接按Enter,表示不用密碼。
生成完成後,可以使用ssh-copy-id命令將公鑰複製到B機器的authorized_keys文件中,以此建立兩台機器之間的SSH信任關係。
ssh-copy-id -i ~/.ssh/id_rsa.pub user@B_server_IP
其中user為B機器上的用戶名,B_server_IP是B機器的IP地址。
二、SSH互信公鑰
SSH連接時,密鑰將會被用來識別客戶端和伺服器,以確定用戶是否有許可權訪問遠程主機。公鑰配對是SSH連接的關鍵,它允許安全地連接到遠程主機而不需要提供密碼。
在上面的配置中,使用ssh-keygen命令生成公鑰,其中-rsa選項是用來指定使用RSA密鑰演算法,-t指定密鑰類型,其默認為rsa。
而SSH互信中默認使用的公鑰文件名是id_rsa.pub,如果需要自己指定文件名可以用-o選項
ssh-keygen -t rsa -f ~/.ssh/my_key_rsa
然後把公鑰文件my_key_rsa.pub放到對應的機器的~/.ssh/authorized_keys文件中。
三、SSH互信失敗
在進行SSH互信的過程中,可能會遇到不成功的情況,下面列出幾個常見的失敗情況的處理方法。
1、未知主機
當使用SSH連接遠程機器時,如果出現如下提示「Warning: Permanently added…”,表明第一次SSH連接將會添加目標主機的公鑰到本地客戶端,這個過程被稱為known_hosts文件的更新。
但是如果在該主機重裝系統、更改IP或指定了新主機名,那麼就會在連接時出現下面的錯誤:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
解決方法是使用ssh-keygen命令更新known_hosts文件,如下所示:
ssh-keygen -R server_IP
示例為刪除server_IP主機在known_hosts文件中的key。
2、許可權不足
在A機器上生成公鑰後,需要用 ssh-copy-id 命令將公鑰(id_rsa.pub或者指定的文件)複製到B機器上的 ~/.ssh/authorized_keys 文件。如果在操作中出現許可權錯誤,則可以使用以下命令授予當前登錄用戶的 /.ssh目錄和 authorized_keys 文件所在目錄的相應許可權:
chmod -R 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
四、SSH互信連接機器
SSH互信建立完成後,可以直接連接遠程機器,命令格式如下:
ssh remote_username@remote_ip_address
其中,remote_username為遠程機器上的用戶名,remote_ip_address為遠程機器的IP地址。
五、SSH互信如何測試
可以使用ssh -v選項查看debug信息,以確認SSH互信配置是否正確。
ssh remote_username@remote_ip_address -v
其中-v參數用來顯示詳細的debug信息,如果SSH互信配置正確,會看到類似下面的輸出信息:
debug1: Offering RSA public key: /home/user/.ssh/id_rsa debug1: Server accepts key: pkalg rsa-sha2-256 blen 149 debug1: Authentication succeeded (publickey).
六、SSH互信配置後可以執行shell
SSH互信配置完成後,可以直接在本地機器上執行遠程機器shell命令:
ssh remote_username@remote_ip_address command
其中command是要執行的命令,例如:
ssh user@192.168.1.100 ls
用來在遠程機器上查看當前目錄下的文件列表。
七、SSH信任配置選取
這裡的配置是指選擇要信任哪些機器,可以通過/etc/ssh/ssh_config文件進行添加。
以某一個機器為例,配置文件如下:
Host specific_machine_alias HostName remote_ip_address User remote_username IdentityFile ~/.ssh/id_rsa
上述配置信息意味著,在連接specific_machine_alias時,連接這台機器的用戶名是remote_username,使用的密鑰是~/.ssh/id_rsa,並且遠程主機的IP地址是remote_ip_address。
八、總結
以上,我們對SSH互信做了詳細的闡述,包括SSH互信配置、SSH互信公鑰、SSH互信失敗、SSH互信連接機器、SSH互信如何測試、SSH互信配置後可以執行shell、SSH信任配置選取等方面。希望這篇文章能夠幫助大家更好地使用SSH互信,提高工作效率。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/283228.html