环境
本地:Ubuntu
运程主机VPS:CentOS7
免输密码设置
多远程主机VPS对应多ssh key设置
多远程主机VPS公用一个ssh key设置
更改ssh默认端口详见:VPS-CentOS 7-Secrity
说明:为了保护隐私,本文涉及本人VPS地址的用1.1.1.1
代替。
在Ubuntu下生成ssh公钥和私钥,
若想免密码登陆,这里不设密码,本人为了安全还是设置了,后面有专门讲解免输入密码。
ssh-keygen -t rsa
输出
Generating public/private rsa key pair.
Enter file in which to save the key (/home/augustdoit/.ssh/id_rsa): ##直接回车=默认路径,或者自己填写
Created directory '/home/augustdoit/.ssh'.
Enter passphrase (empty for no passphrase): ##输入密码(不设密码则直接回车)
Enter same passphrase again: ##重复密码
Your identification has been saved in /home/augustdoit/.ssh/id_rsa.
Your public key has been saved in /home/augustdoit/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:+kIoJPxSwZ2LkwFJp6UMZ4J17kokSuVXUaZSEgA37U4 augustdoit@augustdoit
The key's randomart image is:
+---[RSA 2048]----+
|==OB=oo+oo |
|+=O*.++ o |
|o=..Bo.. |
|++.*.E. |
|.o+ =. S |
| o.o.... |
| o. .. |
| .. |
| .. |
+----[SHA256]-----+
生成的公钥、私钥保存在/home/augustdoit/.ssh/
目录下
公钥:id_rsa.pub
私钥:id_rsa
参数说明
参数-t rsa
表示使用rsa算法进行加密(也可指定为dsa算法)
参数-b 4096
设置采用的字节长度,默认2048,变态点可以选4096,生成的时间稍长点。
ssh登陆远程主机VPS,创建.ssh
目录(如果有则忽略)
ssh [email protected]
mkdir .ssh
本地Ubuntu新建一个终端,注意替换id_rsa.pub
以及远程主机VPS的地址
scp /home/augustdoit/.ssh/id_rsa.pub [email protected]:~/.ssh/
如图
回到ssh登陆远程主机VPS那个终端
导入公钥
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
设置权限
cd /root/.ssh/
chmod 600 authorized_keys
vi /etc/ssh/sshd_config
找到下面行,确保前面的#
已删除
RSAAuthentication yes //Centos7有些版本可能不含这行,不用管
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no //免密码,下有说明
重启ssh服务
service sshd restart
涉及的密码包括两个
1.远程主机用户例如root的密码
2.生成ssh key的密码
上面更改的
PasswordAuthentication no
针对的是远程主机用户例如root的密码,不能免除ssh key的密码。
所以若想完全免输密码,生成key的过程也不要设置密码。
如果要管理多个ssh key,需要在用户主目录下的 .ssh
文件夹下新建并配置config
文件。
两种情况
多个远程主机VPS共用一个密钥id_rsa
多个远程主机VPS对应多个密钥id_rsa
远程服务器vps1
: 1.1.1.1
远程服务器vps2
: 2.2.2.2
本地Ubuntu下
cd
vi .ssh/config
添加
Host 1.1.1.1
IdentityFile ~/.ssh/id_rsa
User root
Host 2.2.2.2
IdentityFile ~/.ssh/id_rsa
User root
参数含义如下
HostName 主机名/IP
User 用户名
IdentityFile 密钥文件的路径
Port 端口号
DynamicForward 本地端口号
测试结果
注意:
本地生成多套公钥与私钥,可以设置生成的目录,在执行ssh-keygen -t rsa
前需要先创建好目录。
例如/home/augustdoit/.ssh/vps2/id_rsa
创建目录
cd .ssh
mkdir vps2
ssh-keygen -t rsa 此时设置目录为/home/augustdoit/.ssh/vps2/id_rsa
上传、导入、设置权限以及更改配置文件这里不再说了,上面有
确保远程服务器上传的id_rsa.pub与本地id_rsa对应
远程服务器vps1
: 1.1.1.1
对应 /home/augustdoit/.ssh/id_rsa
远程服务器vps2
: 2.2.2.2
对应 /home/augustdoit/.ssh/vps2/id_rsa
修改config文件
cds
vi .ssh/config
改为
Host 1.1.1.1
IdentityFile ~/.ssh/id_rsa
User root
Host 2.2.2.2
IdentityFile ~/.ssh/vps2/id_rsa
User root
测试结果