SSH 遠端主機免密碼執行指令

系統管理員很多時也有多台伺服器需要管理, 以下會示範如何透過 SSH 在遠端主機執行指令, 並不用輸入密碼。

本機設定

首先在本機用 ssh-keygen 建立 private key 及 public key, 對於 ssh-keygen 的提問, 直接按 Enter 鍵即可:

$ ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/home/toly/.ssh/id_rsa): (按 Enter)
Enter passphrase (empty for no passphrase): (按 Enter)
Enter same passphrase again: (按 Enter)

Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.

這時會將 private key 及 public key 儲存在使用者的 Home 目錄下 .ssh 目錄, 分別是 id_rsa 及 id_rsa.pub

執行 ssh-add 及 ssh-agent 指令 (以避免出現 “Could not open a connection to your authentication agent.” 錯誤):


$ cd ~/.ssh
$ eval ssh-agent
$ ssh-add id_rsa

遠端主機設定

將上面的產生的 public key (id_rsa.pub) 複製到遠端主機的 ~/.ssh 目錄下, 可以用 vi 複製並在遠端主機貼上, 以下是使用 scp 複製的例子, 將 remoteuser 改成遠端主機的登入使用者名稱, xxx.xxx.xxx.xxx 換成遠端主機的 IP:

$ scp id_rsa.pub remoteuser@xxx.xxx.xxx.xxx:~/.ssh/

然後登入遠端主機, 將 public key 加入 “authorized_keys”:

$ cd ~/.ssh
$ cat id_rsa.pub >> authorized_keys
$ chmod 600 authorized_keys

現在已經設定完成, 在本地主機可以免密碼在遠端執行指令, 語法是:

$ ssh remoteuser@xxx.xxx.xxx.xxx uname -a

Linux remote-host 3.10.0-957.5.1.el7.x86_64 #1 SMP Fri Feb 1 14:54:57 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux



你可能感興趣的內容:

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.