Linux使用ssh进行免登陆

Linux使用ssh进行免登陆

在linux使用的时候,经常需要登入到远程机器,如果每次登入都需要输入密码的话,会十分的麻烦。使用基于ssh协议的弓腰认证方式老进行免登录是linux上常用的方式。这种方式需要将你的公钥分发到需要免登陆的机器上面。

方法

  1. 安装ssh服务:sudo apt-get install ssh,并开启服务。service ssh start
  2. 使用ssh生成公钥证书,ssh-keygen -t dsa,这个命令会在~/.ssh/下面生成公钥和私钥匙。
  3. 使用scp传输到远程的机器上面,然后把内容追加到远程主机 ~/.ssh/authorized_keys文件中
    • 传输公钥 scp ~/.ssh/id_dsa.pub userB@10.20.0.2:~/.ssh/id_dsa.pub
    • 追加公钥到authorized_keys。 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
  4. 这样基本上就完成了。在这里测试的时候,可以使用登入到自己的机器进行测试,就是在自己本地生成公钥,添加到自己本地的authorized_keys中,然后ssh localhost。这样可以的话,基本上流程就没有问题了。

问题的排查

在实际的执行过程中,可能会发生很多意想不到的问题。下面的问题解决是来自Why am I still getting a password prompt with ssh with public key authentication?在这里只是做简单的翻译

  • 你本地的目录 ~,~/.ssh,远程主机上的文件~/.ssh/authorized_keys,只能你才有权限写:rwx——或者rwxr-xr-x,这样的权限都是可以的,但是rwxrwx—是不行的,就算你是唯一一个在这个组的用户。
  • 远程机器上的~/.ssh/authorized_keys这个文件一定是要可读的(至少400),当你需要增加更多的公钥进去的时候,你也可以把文件权限这是为可写(600)
  • 你本地的私钥文件一定是只能对你读写的:rw——-,或者600
  • 另外还有一个文件,我不是很了解,就直接引用了

    Also, if SELinux is set to enforcing, you may need to run restorecon -R -v ~/.ssh (see e.g. Ubuntu bug 965663 and Debian bug report #658675; this is patched in CentOS 6).


如果在执行的过程中,发现不可用的话,一般按照上面的流程一个一个排查,就能解决问题了

Reference:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值