linux远程登录ssh免密码

原文链接,感谢原作者。

(一)问题:

假如我们现在有两台机器:ServerA和ServerB,现在想要让ServerA不用输入密码就能够进行访问。

(二)方法和原理:

我们使用ssh-keygen在ServerA上生成private和public密钥,将生成的public密钥拷贝到远程机器ServerB上后,就可以使用ssh命令无需密码登录到另外一台机器ServerB上。

在linux系统中,ssh是远程登录的默认工具,因为该工具的协议使用了RSA/DSA的加密算法【默认是DSR算法】,该工具做linux系统的远程管理是非常安全的。

(三)实验步骤:

1.登录ServerA

2.ssh-keygen -t  rsa,将会生成公钥和私钥文件id_rsa和id_rsa.pub【如果一直回车下去,最后这两个文件应该在/home/$USER/.ssh下面】

3.将 .pub 文件复制到ServerB机器的 .ssh 目录下,并保存为authorized_keys

可以使用:

ssh-cop-id命令会将指定的公钥文件复制到远程计算机

[[email protected] ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
28
[email protected]‘s password: 
Now try logging into the machine, with "ssh ‘[email protected]‘", and check in:

.ssh/authorized_keys

to make sure we haven‘t added extra keys that you weren‘t expecting.

[[email protected] ~]$ ssh [email protected]
[email protected]‘s password: 
Last login: Thu Nov 24 16:05:32 2011 from 192.168.55.229
[[email protected] ~]$

4.大功告成,从A机器登录B机器的目标账户,不再需要密码了

5.设置文件和目录权限【这一步可以省略,但是为了安全起见,加上也是有必要的~】

设置authorized_keys权限

chmod 644 authorized_keys

设置.ssh目录权限

chmod 700 -R .ssh

6.要保证.ssh和authorized_keys都只有用户自己有写权限。否则验证无效。(今天就是遇到这个问题,找了好久问题所在),其实仔细想想,这样做是为了不会出现系统漏洞。

报错:

The authenticity of host ‘192.168.20.59 (192.168.20.59)‘ can‘t be established.  
RSA key fingerprint is 6a:37:c0:e1:09:a4:29:8d:68:d0:ca:21:20:94:be:18.  
Are you sure you want to continue connecting (yes/no)? yes  
Warning: Permanently added ‘192.168.20.59‘ (RSA) to the list of known hosts.  
[email protected]‘s password:   
Permission denied, please try again.  
[email protected]‘s password:   
Permission denied, please try again.  
[email protected]‘s password:   
Permission denied (publickey,gssapi-with-mic,password).

如果说以上权限没有问题的话,那就赶紧去看看你的配置文件吧,因为有人会喜欢改这个东东,导致你无论如何都不会成功:

打开/etc/ssh/ssh_config文件,找到以下部分:

#   IdentityFile ~/.ssh/identity
   IdentityFile ~/.ssh/id_rsa

看看你的私钥名字是不是这个 ~/.ssh/id_rsa

哈哈,还是得好好看配置文件喽~

假如有台中控机已经打通了到各台应用主机间的无密码远程登陆,现在需要打通另一台中控,下面是我写的脚本来实习此功能:

############################################ 实现中控无密码登陆 ############################################

#!/bin/bash
#Author:zhuying

scriptdir=/home/oracle/zy/changecps

for ip in `grep -v ^# "$scriptdir"/cps.ip`
do
        scp /home/oracle/zy/changecps/169keys [email protected]$ip:~/ </dev/null
        ssh $ip "cat ~/169keys >> /home/oracle/.ssh/authorized_keys;rm ~/169keys" </dev/null
        ssh $ip "cat /home/oracle/.ssh/authorized_keys|sort|uniq > /home/oracle/.ssh/tmp.keys" </dev/null
        ssh $ip "mv /home/oracle/.ssh/tmp.keys /home/oracle/.ssh/authorized_keys" </dev/null
        ssh $ip "chmod 644 /home/oracle/.ssh/authorized_keys" </dev/null
done

###########################################  实现中控无密码登陆 ##############################################

ps:

如果我们添加公钥后,还是无法访问,也可能是ServerA主机上面的一个文件known_hosts中已经存在ServerB的ip信息,删除重新访问即可。

另外,如果以上方法尝试过后还是不行,可能是因为登录失败次数过多被锁定,这个时候我们就需要去看看我们的系统日志了/var/log/messages,将之前的锁定信息日志删除就可以了。

参考文章:

http://os.51cto.com/art/200812/101989_1.htm

 

问题:

(1)Connection closed by $IP

可能是超过系统默认失败次数了,然后清理就ok了~【faillog -a;faillog -r】

(2)在前面步骤都正确无误的情况下,每次远程登录还是提示让输入密码,这时候有可能是权限问题:

    chmod 644 authorized_keys再次登录就ok了~【如果是Red Hat 5.6的话,最好改成600,否则认为是不安全的~】

1楼 紫颖 2012-03-28 10:51发表 [回复] [引用] [举报]

基于密钥不输入密码从windows到linux不输入密码:
基于Xmanager Enterprise 3实现:先生成密钥对点tools-->user key Generation Wizard 选择RSA 生成密钥对 下一步然后保存下文件到桌面
然后把桌面的密钥拷贝到linux中 然后cat id_rsa.pub >>~/.ssh/authorized_keys2中

时间: 2024-10-25 07:42:48

linux远程登录ssh免密码的相关文章

远程登录ssh免密码

问题: 假如我们现在有两台机器:ServerA和ServerB,现在想要让ServerA不用输入密码就能够进行访问. 方法和原理: 我们使用ssh-keygen在ServerA上生成private和public密钥,将生成的public密钥拷贝到远程机器ServerB上后,就可以使用ssh命令无需密码登录到另外一台机器ServerB上. 在linux系统中,ssh是远程登录的默认工具,因为该工具的协议使用了RSA/DSA的加密算法[默认是DSR算法],该工具做linux系统的远程管理是非常安全的

Linux远程登陆以及免密码登陆

最近学了一下linux 的东西,其中有一个是关于ssh(linux远程登陆的) 在这里总结一下: 首先关于ssh的安装 假设我们需要登陆的主机位B,在B主机的终端输入: ssh localhost 如果出现: 就说明还没有安装ssh,所以需要安装ssh 输入  sudo apt-get install openssh-server进行安装 ps:如果这里安装失败,可能是你的一个依附程序版本不对,按照它给的名字重新安装就行了 安装成功! 登陆就非常简单了 之后我们在我们远程进行操作的主机A输入:

【linux】配置SSH免密码登陆

1.输入ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 其中''里的是登陆的密码,因为要设置免密码,所以''里是什么都没有的,空格也不行 2.输入 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys 3.输入 ssh -version 如果不需要密码则成功了

Linux上实现ssh免密码登陆远程服务器

0.说明 平常使用ssh登陆远程服务器时,都需要使用输入密码,希望可以实现通过密钥登陆而免除输入密码,从而可以为以后实现批量自动部署主机做好准备. 环境如下: IP地址 操作系统 服务器端 10.0.0.128/24 CentOS 6.5 x86 客户端 10.0.0.129/24 Ubuntu 16.04 x86 1.客户端生成密钥对 生成密钥对: [email protected]:~$ ssh-keygen -t rsa -b 2048 Generating public/private 

琐碎-到底要不要SSH免密码设置

搭建了很多次hadoop2.2.0了,尝试过很多不同的启动方法.配置参数.位置,其中涉及到到底要不要配置SSH免密码登录的问题 先是搞清楚为什么需要SSH免密码登录 SSH免密码登录操作步骤: ... ... 在hadoop2.2.0中有三种启动方式: 使用hadoop-daemon.sh和yarn-daemon.sh分别启动每一个守护进程: 使用start-dfs.sh和start-yarn.sh分开启动不同模块的所有进程: 使用start-all.sh启动所有模块所有进程. 三种启动方式在实

【Hadoop系列】linux下 root用户免密码登录远程主机 ssh

操作环境: CentOS 6.5 操作对象: 用户A主机和远程主机B 正文部分:斜体加粗代表linux指令. linux下 非root用户免密码登录远程主机 ssh请转至此链接:XXXXXXXXXXXXXXXX(暂未写好) 一.远程主机B和用户A都安装openssh 首先我们检查远程主机是否安装openshh和rsync rpm -qa|grep opensshrpm -qa|grep rsync 如果没有返回相关信息代表并未安装,我们用yum指令安装. yum install openssh

Linux上ssh免密码登录

由于工作需要,需要频繁发布系统,于是就决定在发布机上搞一套自动上传文件,远程运行脚本的自动化发布,但是每次ssh都需要输入密码,于是就需要本文提到的SSH免密码登录. 现有A服务器和B服务器,A服务器需要SSH免密码连到B服务器. 先在B服务器上以下命令,会在用户目录下创建.ssh目录并在其下创建公钥和私钥(id_rsa,id_rsa.pub): ssh-keygen -t rsa -P '' 然后为了测试方便,先将自己的公钥导入到受信的公钥列表中 cd ~/.ssh cat id_rsa.pu

Linux 配置ssh 免密码登录

在平常应用中,我们经常会登录到其他主机,比如说服务器,每次都需要用户名和密码. 我们可以通过ssh免密码登录服务器而不需要输入密码. 现在有一台ubuntu的阿里云服务器,称之为 server.  公用ip 地址为:192.168.100.100.  现在开始实现用自己的电脑实现ssh免密码登录到 server中.我的电脑是windows 系统,并且安装了Git.(mac 的原理其实一样) 1. 打开Git Bash 执行以下命令生成 sshkey ssh-keygen -t rsa -C "[

Linux下SSH免密码登录

转自:http://haitao.iteye.com/blog/1744272 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 author