Linux 技术手札

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

Exit mobile version