ssh key 使用非对称加密方式生成公钥和私钥,公钥是传播给别人的,私钥存放在本地。
私钥存放在
~/.ssh
公钥对外公开,放在服务器的
~/.ssh/authorized_keys
说明!
A主机和B主机,两个主机,如果是A主机生成的公钥和私钥,那么就是A主机作为服务器,自己配置私钥,公钥分享出去,等待B主机连接。在B主机的authorized_keys文件里面写入公钥,就可以免密登陆A主机了。
生成ssh key
Windows
在Xshell里面,工具选项里
点击生成,就会出现下图的生成密钥的界面。
界面中看到可以选择加密方式,然后下一步,下一步就到了给密钥起名字、加密密钥的界面了,这里的加密密钥可以不写,就是不加密。可以直接下一步。
下一步就是保存公钥文件,点击保存文件到本地。
返回到用户密钥管理界面。就能看到刚才创建的密钥文件了。
Linux生成公钥
ssh-keygen -t rsa
ssh-keygen -t dsa
这两种加密算法不同
首先进入~/.ssh/目录下,然后输入上面的生成公钥的命令。不写后面的-t rsa默认就是rsa加密算法。
下面会让你写公钥保存到哪里,和加密密钥,这里加密密钥同样可以不设置。
结束之后可以使用下面命令查看是否创建成功。
ls -al
这里的.pub就是公钥,上面的就是私钥
使用ssh key
Windows
当我们在Xshell里面使用公钥登陆的时候
首先输入一些基本的信息。
然后点击用户身份验证进行使用公钥登陆。
但是当我们连接的时候,出现了下面的情况:没有在远程主机注册。
这是因为服务器上~/.ssh/目录下面没有用authorized_keys进行备注它。
在目录下面新建这个文件,然后用vim编辑它。
复制刚才用windows方法生成的公钥里面的内容,粘贴到这个文件中,然后保存退出。
这时,再次使用刚才的操作连接服务器。
这时候就直接连接成功!
Linux
复制上面Linux生成的.pub里面的内容,粘贴到authorized_keys
然后将上面私钥添加到系统中。
ssh-add yuan_linux
但是这时候出现问题了。如下图
上网上搜了一下,也请教了大佬同学。有两个方法解决
1.命令
ssh-agent bash
然后在重新添加,就成功了。
注意:后面的路径要写绝对路径!
2.删除
删除.ssh文件夹,重新来一遍。就可以了
因为我是先用的第一种方式,直接成功了,第二种就没再用。
最后就是登陆测试了。
成功登陆了,没有使用密码。
SSH端口安全
端口安全指的是尽量避免服务器的远程连接端口被不法分子知道,为此而改变默认端口号的操作。
改变服务端口
修改/etc/ssh/sshd_config配置
可以将注释去掉,或者添加多个监听端口