【linux】linux免秘钥登录和scp传输文件

哦豁,好像好久没有写博客了,上次写是4月8号,快一个月了吧~

可能是最近比较忙吧。。。

这次来记录一个简单的东西~

 

如题,其实要做到linux免秘钥登录,无非就几条命令,百度一下就能找到,但是有些概念许多文章没有讲或者未描述清楚,所以我就来这里啰嗦下!

原理:

场景:要通过自己的linux登录远程的别人linux

在自己的linux上生成私钥和公钥,然后把自己的公钥发给别人(公钥是可以随便发的,想发给谁就发给谁),私钥自己保存(私钥是不能让任何人拿到的)

如何操作

1、生成自己的公钥私钥的命令

ssh-****** -t rsa

使用rsa来做公钥秘钥(rsa:一种非对称加密算法)

如图(连按3次回车)

第一个回车的意思:是否在默认路径上生成私钥

第二个回车的意思:输入私钥密码(可为空)

第三个回车的意思:重复输入私钥密码

【linux】linux免秘钥登录和scp传输文件

执行了这个命令之后,会在~/.ssh目录下生成两个文件

id_rsa(自己的私钥)

id_rsa.pub(可以发给别人的公钥)

注意:如果以前生成过但是不成功,建议删除当前用户的家目录(执行cd ~ 就可以进入家目录)下的 .ssh 文件夹(这是一个隐藏文件夹,可以ll -a 来查看)

【linux】linux免秘钥登录和scp传输文件

接下来是第二步

 

2、将自己的公钥发送给你想要远程登录的机器!

ssh-copy-id -i ~/.ssh/id_rsa.pub <远程机器的ip>

或者

ssh-copy-id -i ~/.ssh/id_rsa.pub <远程机器的用户名>@<远程机器的ip>

第一条命令默认写到远程机器的root用户下,第二条命令默认写在远程机器的<远程机器的用户名>

【linux】linux免秘钥登录和scp传输文件

然后输入密码,就成功了!

当你在执行这条命令的时候,实质就是把自己的公钥(id_rsa.pub)写入到<远程机器对应用户>的家目录下的.ssh的authorized_keys这个文件中!!

所以基于这样的原理,我们也可以使用命令

把自己的公钥添加到远程机器的authorized_keys

scp -p ~/.ssh/id_rsa.pub [email protected]<远程机器的ip>:/root/.ssh/authorized_keys

顺便附带一篇写得很不错的scp命令的使用

每天一个linux命令:scp命令:https://www.cnblogs.com/webnote/p/5877920.html(作者:用代码书写人生)

 

3、以上两条命令执行成功后,就可以免秘钥登录对方机器了

ssh <远程机器的用户名>@<远程机器的ip>

所以其实就是自己的机器要登录其他机器的时候使用私钥加密自己的信息之后,用远程机器对应的公钥解密从而验证身份真实性。

 

4、.ssh文件夹中的几个文件都有什么用?

id_rsa:自己的私钥

id_rsa.pub:自己的公钥,可以发给别人的

authorized_keys:其他机器的公钥

known_hosts:自己这台机器登录过其他哪些机器(通过ssh登录的)

注:如果有黑客登录了你的机器,然后用你的机器恶意攻击其他机器,那。。。known_hosts这个文件里应该会有黑客登录过哪些其他机器的哪个用户的证据

 

最后附上一张图(如果我上面的文字没有描述清楚的话)

【linux】linux免秘钥登录和scp传输文件

 

所以如果是远程机器也要免秘钥登录自己的机器,那就需要远程机器把远程机器的公钥发送到自己机器的authorized_keys文件中!!

我想,我应该说明白了吧~菜鸡一只,如果有说错的,还请各位批评指出,定当及时改正,不误导新人!下次再见拜拜~