ssh key 使用非对称加密方式生成公钥和私钥,公钥是传播给别人的,私钥存放在本地。

私钥存放在
~/.ssh
公钥对外公开,放在服务器的
~/.ssh/authorized_keys

说明!

A主机和B主机,两个主机,如果是A主机生成的公钥和私钥,那么就是A主机作为服务器,自己配置私钥,公钥分享出去,等待B主机连接。在B主机的authorized_keys文件里面写入公钥,就可以免密登陆A主机了。

生成ssh key

Windows

在Xshell里面,工具选项里

centos7 导入公钥 linux公钥位置_Windows


点击生成,就会出现下图的生成密钥的界面。

centos7 导入公钥 linux公钥位置_ssh_02


界面中看到可以选择加密方式,然后下一步,下一步就到了给密钥起名字、加密密钥的界面了,这里的加密密钥可以不写,就是不加密。可以直接下一步。

centos7 导入公钥 linux公钥位置_Windows_03


下一步就是保存公钥文件,点击保存文件到本地。

centos7 导入公钥 linux公钥位置_服务器_04


返回到用户密钥管理界面。就能看到刚才创建的密钥文件了。

centos7 导入公钥 linux公钥位置_linux_05

Linux生成公钥

ssh-keygen -t rsa
ssh-keygen -t dsa

这两种加密算法不同

首先进入~/.ssh/目录下,然后输入上面的生成公钥的命令。不写后面的-t rsa默认就是rsa加密算法。

centos7 导入公钥 linux公钥位置_ssh_06


下面会让你写公钥保存到哪里,和加密密钥,这里加密密钥同样可以不设置。

centos7 导入公钥 linux公钥位置_ssh_07


结束之后可以使用下面命令查看是否创建成功。

ls -al

centos7 导入公钥 linux公钥位置_centos7 导入公钥_08


这里的.pub就是公钥,上面的就是私钥

使用ssh key

Windows

当我们在Xshell里面使用公钥登陆的时候

首先输入一些基本的信息。

centos7 导入公钥 linux公钥位置_linux_09


然后点击用户身份验证进行使用公钥登陆。

centos7 导入公钥 linux公钥位置_Windows_10


但是当我们连接的时候,出现了下面的情况:没有在远程主机注册。

centos7 导入公钥 linux公钥位置_Windows_11


这是因为服务器上~/.ssh/目录下面没有用authorized_keys进行备注它。

在目录下面新建这个文件,然后用vim编辑它。

centos7 导入公钥 linux公钥位置_linux_12


复制刚才用windows方法生成的公钥里面的内容,粘贴到这个文件中,然后保存退出。

centos7 导入公钥 linux公钥位置_linux_13


这时,再次使用刚才的操作连接服务器。

centos7 导入公钥 linux公钥位置_ssh_14


这时候就直接连接成功!

Linux

复制上面Linux生成的.pub里面的内容,粘贴到authorized_keys

centos7 导入公钥 linux公钥位置_linux_15


然后将上面私钥添加到系统中。

ssh-add yuan_linux

但是这时候出现问题了。如下图

centos7 导入公钥 linux公钥位置_linux_16


上网上搜了一下,也请教了大佬同学。有两个方法解决

1.命令
ssh-agent bash

然后在重新添加,就成功了。

注意:后面的路径要写绝对路径!

centos7 导入公钥 linux公钥位置_Windows_17

2.删除

删除.ssh文件夹,重新来一遍。就可以了
因为我是先用的第一种方式,直接成功了,第二种就没再用。

最后就是登陆测试了。

centos7 导入公钥 linux公钥位置_linux_18

成功登陆了,没有使用密码。

SSH端口安全

端口安全指的是尽量避免服务器的远程连接端口被不法分子知道,为此而改变默认端口号的操作。

改变服务端口

修改/etc/ssh/sshd_config配置

centos7 导入公钥 linux公钥位置_centos7 导入公钥_19


可以将注释去掉,或者添加多个监听端口

centos7 导入公钥 linux公钥位置_linux_20