关于linux的SSH 无密码访问,按照网上攻略设置后的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于linux的SSH 无密码访问,按照网上攻略设置后的问题相关的知识,希望对你有一定的参考价值。
比如A和B机子链接,A机子建立公钥还是B机子建立公钥,还有将ssh-keygen创立的id_rsa.pub覆盖到哪个机子的authortized_keys里?为什么我经过设置后链接依旧要输入密码,下图是我ssh -v后的登陆过程信息
A机创建密钥
将A机的密钥拷贝到B机器上
输入密码后,拷贝完毕。
B机创建密钥
将B机的密钥拷贝到文件中
将密钥文件再拷贝到A机器上
我照着步骤一步不差 还是需要密码访问,我重启ssh 服务时候出现这个
服务名字是 sshd 不是ssh。
如果照做还不行,可以尝试将/root/.ssh/known_hosts文件删除,再将密钥删除,重新再做一次。
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
#!/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 无密码访问,按照网上攻略设置后的问题的主要内容,如果未能解决你的问题,请参考以下文章