SSH免密登入|SCP免密传输

作者: 栾呱呱 | 来源:发表于2018-07-13 16:56 被阅读0次

有机器A(192.168.1.1)和机器B(192.168.1.2),实现从A通过SSH免密码登入到B

  • A机器上生成公钥和私钥
[work@192.168.1.1 ~]$ cd /home/work/.ssh // .ssh目录存放秘钥相关的配置文件
[work@192.168.1.1 .ssh]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/work/.ssh/id_rsa): id_rsa_luanguagua // 这里如果使用默认的话可以直接回车
Enter passphrase (empty for no passphrase): // 不用输,直接回车
Enter same passphrase again: // 不用输,直接回车
Your identification has been saved in id_rsa_luanguagua.
Your public key has been saved in id_rsa_luanguagua.pub.
The key fingerprint is:
67:7e:3d:81:cf:51:da:7b:10:a4:5b:a4:1e:59:45:9f work@192.168.1.1
The key's randomart image is:
+--[ RSA 2048]----+
|              +oo|
|             B  o|
|            = oEo|
|           . = = |
|        S o + = .|
|         +   + +.|
|          . . =..|
|           .   ..|
|                 |
+-----------------+

至此,会发现多了两个文件,分别是私钥:id_rsa_luanguagua和公钥:id_rsa_luanguagua.pub

  • 拷贝公钥文件id_rsa_luanguagua.pub到机器B上的.ssh/authorized_keys文件里(如果B机器没有.ssh和authorized_keys文件则先创建这个文件夹和文件)
[work@192.168.1.1 .ssh]$ scp id_rsa_luanguagua.pub work@192.168.1.2:/home/work/.ssh/id_rsa_luanguagua.pub // 这里是需要输入密码的
[work@192.168.1.2 .ssh]$ cat id_rsa_luanguagua.pub >> authorized_keys

不出意外,从A登入到B已经可以免密了,但是经常会出现还是需要密码的情况,休慌,可能是权限导致的问题

  • 修改机器B的目录权限
[work@192.168.1.2 .ssh]$ chmod 600 authorized_keys // 最好是600
[work@192.168.1.2 ~]$ ll -a // 检查.ssh的权限,-a参数可以显示隐藏文件
[work@192.168.1.2 ~]$ chmod 700 .ssh // .ssh文件夹权限第二位不能是7

现在,就可以A到B免密登入了,SCP也一样

  • 设置别名登入
    有时候觉得每次输入ssh work@192.168.1.2麻烦,怎么办,可以修改机器A上的config文件,配置别名登入,譬如:
Host luanguagua # 别名
HostName 192.168.1.2 # 主机地址
User work # 用户名
IdentityFile ~/.ssh/id_rsa_luanguagua # 私钥文件

这样执行ssh luanguagua就可以进行免密登入了,效果等同于ssh work@192.168.1.2

  • 多对秘钥配置
    正常情况下,我们生成一对公钥和私钥就行了,有时候同一个机器上出现多对公私钥的情况,譬如机器A存在id_rsa、id_rsa_pub和id_rsa_luanguagua、id_rsa_luanguagua_pub两对公私钥,然后你拷贝的是id_rsa_luanguagua_pub文件到机器B,这个时候,发现无法进行免密登入。原因是:机器A默认读取的是id_rsa这个私钥,而不是id_rsa_luanguagua,如果想免密登入,得指明登入B机器对应的私钥

方法一:通过 - i 参数指定私钥

[work@192.168.1.1 .ssh]$ ssh -i id_rsa_luanguagua work@192.168.1.2

方法二:修改config文件

Host 192.168.1.2 
HostName 192.168.1.2
User work 
IdentityFile ~/.ssh/id_rsa_luanguagua 

这样在登陆机器B的时候,就会使用id_rsa_luanguagua私钥文件

  • 多对秘钥多个远程主机配置
    加入远程主机C(192.168.1.3),现在机器A存在两对公私钥,分别是id_rsa_luanguagua1、id_rsa_luanguagua1_pub和id_rsa_luanguagua2、id_rsa_luanguagua2_pub,A需要用私钥1登入B机器,用私钥2登入C机器,可以这么修改config文件
Host 192.168.1.2 
HostName 192.168.1.2
User work 
IdentityFile ~/.ssh/id_rsa_luanguagua1 

Host 192.168.1.3
HostName 192.168.1.3
User work 
IdentityFile ~/.ssh/id_rsa_luanguagua2

这样在登陆的时候,ssh会根据登陆不同的域来读取相应的私钥文件

相关文章

  • SSH免密登入|SCP免密传输

    有机器A(192.168.1.1)和机器B(192.168.1.2),实现从A通过SSH免密码登入到B A机器上生...

  • ssh免密登录 scp免密传输

    我们采用RSA非对称加密算法,原理: 如果,A要和B通讯,则: (1). A通过RSA算法生成公钥(.pub)和私...

  • 两台linux服务器免密传输配置

    两台linux服务器免密传输配置 两台linux之间,免密配置好之后,可以免密ssh登录,可以免密传输文件,方便使...

  • 常用Linux命令

    ssh -X c8 可打开图形界面的远程登陆,免密登录 ssh root@c8a 非免密登录 scp -r tes...

  • Linux间实现ssh免密登入

    Linux间实现ssh免密登入 在搭建hadoop环境时,要实现机器间的免登入,我通过网上查资料,差不多熟悉了实现...

  • scp免密远程传输

    场景:将A中的dict文件夹传输到B上 登录A,执行 然后一路回车(默认设置就行)将A上的公钥传输到B 按照提示填...

  • scp免密传输文件

    准备两台可以相互传输文件的服务器A/B 1、在A服务器上,进入.ssh 目录; 2、在A服务器上面的.ssh目录下...

  • gitlab设置ssh免密登入 设置git环境变量 websto

    gitlab设置ssh免密登入 打开本地git bash, 使用如下命令生成ssh公钥和私钥对ssh-keygen...

  • linux ssh 免密登陆排查技巧

    场景: 使用ssh免密登陆配置的时候。做了相关配置之后,尝试ssh免密登陆,还是提示输入密码,无法免密登陆。也没有...

  • Hadoop安装

    配置SSH免密登录 ssh localhost 验证免密登录是否配置成功 安装Java Java是Hadoop的先...

网友评论

    本文标题:SSH免密登入|SCP免密传输

    本文链接:https://www.haomeiwen.com/subject/ycvjpftx.html