关于linux的SSH 无密码访问,按照网上攻略设置后的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于linux的SSH 无密码访问,按照网上攻略设置后的问题相关的知识,希望对你有一定的参考价值。

比如A和B机子链接,A机子建立公钥还是B机子建立公钥,还有将ssh-keygen创立的id_rsa.pub覆盖到哪个机子的authortized_keys里?为什么我经过设置后链接依旧要输入密码,下图是我ssh -v后的登陆过程信息

A机创建密钥

ssh-keygen -t rsa

将A机的密钥拷贝到B机器上

scp /root/.ssh/id_rsa.pub B_ip:/root/.ssh/authorized_keys2

输入密码后,拷贝完毕。

B机创建密钥

ssh-keygen -t rsa

将B机的密钥拷贝到文件中

cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys2

将密钥文件再拷贝到A机器上

scp /root/.ssh/authorized_keys2 A_ip:/root/.ssh/authorized_keys2

追问

我照着步骤一步不差  还是需要密码访问,我重启ssh 服务时候出现这个

追答

服务名字是 sshd 不是ssh。
如果照做还不行,可以尝试将/root/.ssh/known_hosts文件删除,再将密钥删除,重新再做一次。

参考技术A 转网络上关于ssh无秘密登陆相关资料:

ssh配置  

主机A:10.0.5.199

主机B:10.0.5.198

需要配置主机A无密码登录主机A,主机B

先确保所有主机的防火墙处于关闭状态。

在主机A上执行如下:

 1. $cd ~/.ssh

 2. $ssh-keygen -t rsa --------------------然后一直按回车键,就会按照默认的选项将生成的密钥保存在.ssh/id_rsa文件中。

 3. $cp id_rsa.pub authorized_keys

这步完成后,正常情况下就可以无密码登录本机了,即ssh localhost,无需输入密码。

 4. $scp authorized_keys summer@10.0.5.198:/home/summer/.ssh ------把刚刚产生的authorized_keys文件拷一份到主机B上.  

 5. $chmod 600 authorized_keys

   进入主机B的.ssh目录,改变authorized_keys文件的许可权限。

   (4和5可以合成一步,执行: $ssh-copy-id -i summer@10.0.5.198 )

正常情况下上面几步执行完成后,从主机A所在机器向主机A、主机B所在机器发起ssh连接,只有在第一次登录时需要输入密码,以后则不需要。

可能遇到的问题:

1.进行ssh登录时,出现:”Agent admitted failure to sign using the key“ .

执行: $ssh-add

强行将私钥 加进来。

2.如果无任何错误提示,可以输密码登录,但就是不能无密码登录,在被连接的主机上(如A向B发起ssh连接,则在B上)执行以下几步:

  $chmod o-w ~/

$chmod 700 ~/.ssh

$chmod 600 ~/.ssh/authorized_keys

3.如果执行了第2步,还是不能无密码登录,再试试下面几个

  $ps -Af | grep agent

检查ssh代理是否开启,如果有开启的话,kill掉该代理,然后执行下面,重新打开一个ssh代理,如果没有开启,直接执行下面:

$ssh-agent

  还是不行的话,执行下面,重启一下ssh服务

$sudo service sshd restart

4. 执行ssh-add时提示“Could not open a connection to your authenticationh agent”而失败

执行: ssh-agent bash追问

执行重启动ssh服务时候出现这个,该怎么办

追答

手动重启:
/etc/init.d/sshd restart

或者
/etc/rc.d/init.d/sshd restart

如果sshd不在/etc/init.d/或者/etc/rc.d/init.d/下,搜索sshd:
find / -name sshd

参考技术B 试试用这个脚本设置:

#!/bin/sh
#
# the ip address for remote server is needed as the only parameter.
# 1. if needed, create local ~/.ssh/id_dsa.pub
# 2. append id_dsa.pub to remote authorized_keys&authorized_key2
#
SERVER_IPADDR=$1
LOCAL_SSH_FILE="id_dsa.pub"
if [ "" = "$SERVER_IPADDR" ]
then
echo "please give the ip address of server controlled..."
exit 1
fi
cd ~/.ssh/
if [ -f "$LOCAL_SSH_FILE" ]
then
echo "key file of ssh dsa has been created already"
else
echo "start to create local $LOCAL_SSH_FILE"
ssh-keygen -t dsa
fi

ssh $SERVER_IPADDR mkdir ~/.ssh/
scp root@$SERVER_IPADDR:~/.ssh/authorized_keys ~/.ssh/temp
cat ~/.ssh/id_dsa.pub >> ~/.ssh/temp
scp ~/.ssh/temp root@$SERVER_IPADDR:~/.ssh/authorized_keys
scp ~/.ssh/temp root@$SERVER_IPADDR:~/.ssh/authorized_keys2
rm ~/.ssh/temp

配置Linux主机SSH无密码访问

通过证书签名达到Linux主机SSH无密码访问,使用ssh-keygen与ssh-copy-id来实现快速证书的生成及公钥下发,其中ssh-keygen生成一对密钥,使用ssh-copy-id来下发生成的公钥。具体操作如下:

    在主机A(192.168.0.100)创建密钥,执行:

ssh-keygen -t rsa

,有询问直接按回车键即可,将在/root/.ssh/下生成一对密钥,其中id_rsz为私钥,id_rsa.pub为公钥(需要下发到B主机用户.ssh目录,同时要求重名成authorized_keys文件)。(B主机:192.168.0.101)也可以是使用-f参数指定证书生成位置。

ssh-keygen -t rsa -f /root/.ssh/id_rsa  #指证书的生成位置

技术分享

    接下来同步公钥文件id_rsa.pub到目标主机,推荐使用ssh-copy-i公钥拷贝工具(也可以使用scp拷贝),命令格式:/usr/bin/ssh-copy-id [-i [identity_file]] [[email protected]] machine。

#ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]

    检验SSH无密码配置是否成功,运行ssh [email protected],如果直接进入root账号提示符,则说明配置成功。


以上是关于关于linux的SSH 无密码访问,按照网上攻略设置后的问题的主要内容,如果未能解决你的问题,请参考以下文章

配置Linux主机SSH无密码访问

linux下怎样设置ssh无密码登录

linux 集群配置ssh无密码访问

linux下设置SSH无密码登录

ssh实现无密码登陆

linux无密码登录