SSH免密登录云服务器记录
生成SSH密钥
首先检查在主机的~/.ssh
目录下查看是否存在id_rsa
、id_rsa.pub
文件,若没有则采用下面的方法生成密钥。(若重装云服务器系统,则检查在known_hosts
文件中删除对应ip相关的内容)
使用-t
参数创建一个指定密钥的类型(rsa)并使用-C
参数添加注释:
ssh-keygen -t rsa -C "zhangsan@gmail.com"
输入后会有如下提示:
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
第一行是提醒我们正在生成一对密钥;第二行则是让我们选择密钥存放的文件路径,通常我们都会选择使用默认路径,此时不用输入任何路径,直接回车即可;回车后终端给出如下提示:
Enter passphrase (empty for no passphrase):
它提示我们输入一串密码短语,这里不输入任何值也不会影响生成结果,直接回车即可;回车后终端给出如下提示:
Enter same passphrase again:
这里是让我们再次输入一遍密码短语,免得我们在第一次输入的时候误操作。如果上一步没有输入值,那么这里也直接回车即可;回车后终端给出如下提示:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:/k7eBzEwIUHIjh0osGBEkoRMLKKbCV4XzyhHJ3ffsj0 zhangsan@gmail.com
The key's randomart image is:
+---[RSA 3072]----+
|%O o o+... |
|O+. .++o oo |
|= ..+O.. .o. |
|o o.+oo oo. |
|o+. + S +o |
|+. . ..E |
| . . .. |
| + . . |
| .+ .. |
+----[SHA256]-----+
从提示中我们可以看到密钥存放的文件路径,默认情况下公钥和私钥都存放在 ~/.ssh 目录下。
配置免密登录
将把主机下的id_rsa.pub
复制到服务器下,在服务器的.ssh/authorized_keys
文件里。
推荐采用命令方式,手动复制粘贴可能会有格式错误。
ssh-copy-id -i ~/.ssh/id_rsa.pub root@11.11.11.11
回车后输入云服务器的密码,会有类似如下提示:
~/.ssh » ssh-copy-id -i ~/.ssh/id_rsa.pub root@11.11.11.11 zhaowenxu@SINO-Mac
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/zhaowenxu/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@11.11.11.11'"
and check to make sure that only the key(s) you wanted were added.
此时便可以免密登录云服务器查看(若为第一次登录输入yes)
若经过上述配置依然需要输入密码。则检查下述内容:
注意一:
- CentOS默认公钥登陆关闭状态需要开启
- 修改配置文件:/etc/ssh/sshd_conf
命令:vim /etc/ssh/sshd_conf
- 找到下面两行注释将前面的#去掉并将后面的no改为yes
RSAAuthentication yes PubkeyAuthentication yes
- 重启sshd服务:
systemctl restart sshd
免用户名和ip登录
虽然我们省去了输入密码的步骤,不过用户名和 IP 地址也不短。如果想要省略用户名和 IP 地址,可以通过配置~/.ssh/config
实现。默认情况下~/.ssh
目录下是没有config
文件的。我们可以通过$ vim ~/.ssh/config
创建。接着写入以下配置信息:
Host Sino
HostName 11.11.11.11
Port 22
User root
IdentityFile ~/.ssh/id_rsa
其中Host
代表云服务器昵称、HostName
为云服务器的公网 IP 地址、Port
代表连接时使用的端口号、User
代表连接时选用的用户名、IdentityFile
代表本地私钥文件的路径。配置完成后退出编辑器,这时候我们就可以用云服务器昵称登录云服务器啦,在终端输入$ ssh Sino
即可。