无密码ssh远程机器

双台 无密码访问  A--->B--->A

第一步需要在服务器A生成密钥对,将生成的公钥上传到服务器B的相关用户目录下的.ssh目录中(没有的话手动创建,注意,它的目录权限是700),

第二步 并将公钥文件名称改为authorized_keys(注意,这个文件的权限应该是644),请注意.ssh目录及authorized_keys文件的权限,权限不符,会使配置无效。

具体操作如下:

[[email protected] ~]# ssh-keygen -t rsa     之后一路回车

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Created directory ‘/root/.ssh’.

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

0e:4c:ec:e3:04:98:b0:71:00:91:75:57:ee:56:a1:82 [email protected]

执行上面一步,会在~/.ssh目录下生成两个文件id_rsa和id_rsa.pub,

其中id_rsa是私钥,保存在本机;id_rsa.pub是公钥,是要上传到远程服务器的。

2、上传公钥到需要无密码登陆的远程服务器B上并改名为authorized_keys:
远程服务器B上如果没有.ssh目录的话,先手动创建:
[[email protected] ~]# mkdir .ssh
[[email protected] ~]# chmod 700 .ssh

然后从服务器A上传公钥文件到远程服务器B:

[[email protected] ~]# scp .ssh/id_rsa.pub [email protected]地址:/root/.ssh/authorized_keys

The authenticity of host ’192.168.15.234 (192.168.15.234)’ can’t be established.
RSA key fingerprint is c9:ef:0c:1b:ac:6c:ef:84:a4:a7:e5:d1:20:58:c8:73.
Are you sure you want to continue connecting (yes/no)? yes                              
Warning: Permanently added ’192.168.15.234′ (RSA) to the list of known hosts.

//这一步会将远程服务器B加入到本机(服务器A)的known_hosts列表中
[email protected]′s password:
id_rsa.pub                                                                                        100%  399     0.4KB/s   00:00

3、测试

上传完公钥文件到远程后,马上从服务器A登陆到服务器B,如果没有输入密码登陆到了服务器B,表示成功,如果还要输入密码,则请检查远程服务器B上的.ssh目录权限是否为700,上传的远程服务器上的公钥名是否改为了authorized_keys,权限是否为600

同理  B-------A  操作一样 :即在B机器上生成的公钥上传并追加到A机器的/root/.ssh/authorized_keys 文件中

这样 双台机器的root用户就可以互相无密码ssh了

多台机器相互无密码访问 A->B->C->A->C->B->A


1、在每台服务器上都执行ssh-keygen -t rsa生成密钥对:
#ssh-keygen -t rsa

2、在每台服务器上生成密钥对后,将公钥复制到需要无密码登陆的服务器上:在每台服务器生成密钥对后,在每台服务器上执行ssh-copy-id命令

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

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


以上命令,可以自动将公钥添加到名为authorized_keys的文件中,在每台服务器都执行完以上步骤后就可以实现多台服务器相互无密码登陆了

Linux系统里缺省都包含一个名为ssh-copy-id的工具:

# type ssh-copy-id

ssh-copy-id is /usr/bin/ssh-copy-id

你用cat或者more命令看一下就知道ssh-copy-id本身其实就是一个shell脚本,用法很简单:

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

ssh-copy-id有一个很要命的问题,那就是缺省它仅仅支持SSH运行在22端口的情况,不过实际上出于安全的需要,我们往往都会更改服务器的SSH端口,比如说改成10022端口,这时候你运行ssh-copy-id就会报错了,直接修改ssh-copy-id脚本当然可以修正这个问题,但是那样显得太生硬了,实际上还有更好的办法:

# vi ~/.ssh/config

加上内容:

Host server
Hostname ip
Port 10022

你也可以单独只加入Port一行配置,那样就是一个全局配置,保存后再运行ssh-copy-id命令就不会报错了。

补充:经网友提示,如果端口不是22,不修改config文件,按如下方式也可以:

ssh-copy-id -i ~/.ssh/id_rsa.pub “-p 10022 [email protected]

1.在服务器端(192.168.0.1)产生密钥
  [[email protected] ~]# cd /root/.ssh/
  [[email protected] .ssh]# ls
  known_hosts
  [[email protected] .ssh]# ssh-keygen -t dsa
  Generating public/private dsa key pair.
  Enter file in which to save the key (/root/.ssh/id_dsa):
  Enter passphrase (empty for no passphrase):
  Enter same passphrase again:
  Your identification has been saved in /root/.ssh/id_dsa.
  Your public key has been saved in /root/.ssh/id_dsa.pub.
  The key fingerprint is:
  26:67:d7:2c:27:8f:01:ea:a6:6c:34:d3:9d:04:ac:08 [email protected]
  [[email protected] .ssh]# ls
  id_dsa  id_dsa.pub  known_hosts
  于是生成了id_dsa  id_dsa.pub两个文件。
  2. #cp id_sda.pub authorized_keys
  3.然后将。ssh文件夹拷贝覆盖各个节点间。ssh目录
  [[email protected] .ssh]# scp -r /root/.ssh/ [email protected]:/root/
  [[email protected] .ssh]# scp -r /root/.ssh/ [email protected]:/root/
  [[email protected] .ssh]# scp -r /root/.ssh/ [email protected]:/root/
  此时便可从服务器端无需密码就可以登录到各个节点

ssh 无密码登录要使用公钥与私钥。linux下可以用用ssh-keygen生成公钥/私钥对

有机器A(192.168.1.155),B(192.168.1.181)。现想A通过ssh免密码登录到B。

1.在A机下生成公钥/私钥对。

[[email protected] ~]$ ssh-keygen -t rsa -P ‘‘

-P表示密码,-P ‘‘ 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车。
它在/home/chenlb下生成.ssh目录,.ssh下有id_rsa和id_rsa.pub。

2.把A机下的id_rsa.pub复制到B机下,在B机的.ssh/authorized_keys文件里,我用scp复制。

[[email protected] ~]$ scp .ssh/id_rsa.pub 用户名@ip地址:/home/id_rsa.pub 
[email protected]‘s password:
id_rsa.pub                                    100%  223     0.2KB/s   00:00

由于还没有免密码登录的,所以要输入密码。

3.B机把从A机复制的id_rsa.pub添加到.ssh/authorzied_keys文件里。

[[email protected] ~]$ cat id_rsa.pub >> .ssh/authorized_keys

[[email protected] ~]$ chmod 600 .ssh/authorized_keys

authorized_keys的权限要是600

4.A机登录B机。

[[email protected] ~]$ ssh 192.168.1.181
The authenticity of host ‘192.168.1.181 (192.168.1.181)‘ can‘t be established.
RSA key fingerprint is 00:a6:a8:87:eb:c7:40:10:39:cc:a0:eb:50:d9:6a:5b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘192.168.1.181‘ (RSA) to the list of known hosts.
Last login: Thu Jul  3 09:53:18 2008 from chenlb
[[email protected] ~]$

一、用ssh-keygen创建公钥

[email protected]:/$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/haifeng/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/haifeng/.ssh/id_rsa.
Your public key has been saved in /home/haifeng/.ssh/id_rsa.pub.
The key fingerprint is:
7b:75:98:eb:fd:13:ce:0f:c4:cf:2c:65:cc:73:70:53 [email protected]
The key‘s randomart image is:
+--[ RSA 2048]----+
|                E|
|                .|
|              ...|
|             + =.|
|        S   + +.*|
|         . . + Bo|
|        . . . = =|
|         . . . * |
|            . ..=|
+-----------------+

##输入后,会提示创建.ssh/id_rsa、id_rsa.pub的文件,其中第一个为密钥,第二个为公钥。过程中会要求输入密码,为了ssh访问过程无须密码,可以直接回车 。

2.查看钥匙。

[[email protected] .ssh]# ls ~/.ssh/
id_rsa  id_rsa.pub  known_hosts

###可以发现 ssh目录下的两枚钥匙。

3.将公钥即 id_rsa.pub复制到被管理机器上面

[[email protected] .ssh]# scp id_rsa.pub [email protected]:~/.ssh/authorized_keys
[email protected]‘s password: 
id_rsa.pub                                    100%  408     0.4KB/s   00:00

这是因为首次访问后,ssh会在.ssh/known_hosts中保存各个认证过的主机信息:

1. 前期准备:

检查是否安装了SSH服务和rsync服务(rsync是一个远程数据同步工具,可以通过LAN/WLAN快速同步多台主机之间的文件)

rpm -qa | grep openssh

rpm -qa | grep rsync

我的Centos 5.6下的显示:
  www.2cto.com

如果没有安装则执行一下安装:

yum install ssh

yum install rsync

service sshd restart 启动服务

1. SSH无密码验证的原理

Master作为客户端,要实现无密码公钥认证,连接到服务器Salve上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Salve上。当Master通过SSH链接到Salve上时,Salve会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Salve,Salve确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,期间不需要手工输入密码,重要的过程是将Master上产生的公钥复制到Salve上。

2. 实际操作过程

3.1 Master实现无密码登录Salve

1> 以root用户登录,更改SSH的配置文件

vi /etc/ssh/sshd_config

RSAAuthentication yes # 启用 RSA 认证

PubkeyAuthentication yes # 启用公钥私钥配对认证方式

AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径

重启SSH服务: service sshd restart

2> 以新建用户hadoop身份登录

su - hadoop

ssh-keygen -t rsa 生成密钥文件,一切按默认的方式生成,密钥文件生成后默认存放位置为/home/hadoop(你的用户名)/.ssh

查看生成文件: ll .ssh 下面的这两个即为生成的密钥对

将id_rsa.pub加到授权的key里面去:cat id_rsa.pub >> authorized_keys

修改authorized_keys的权限,(这一步很重要不然的话,SSH时仍然需要密码)

chmod 600 authorized_keys

查看本机是否可以SSH无需密码登录: ssh localhost

OK , 以上证明本机登录成功。

接下来要做的就是将Master的公钥id_rsa.pub复制到Salve上去,并加入到授权的key中。

scp ~/.ssh/id_rsa.pub 目标机器

由于首次登录还没有添加认证,这次仍然会提示输入密码

以hadoop身份登录Salve节点(注意此前意见以root身份对ssh的配置进行修改,方式同上)

确认文件存在

如果不存在.ssh 则创建文件夹.ssh,并将权限修改为700,这一步非常重要因为默认创建的.ssh文件夹的权限为700,手工创建不修改权限的话不能成功,修改权限后将该

id_rsa.pub添加到授权的key中:

(1) mkdir .ssh

(2) chmod 700 .ssh

(3)cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

(4)修改authorized_keys的权限为600          chmod 600 ~/.ssh/authorized_keys

进入Master节点,检查能否登录Salve节点:

ssh 192.168.171.133

OK , 在Master上无密码登录Salve成功

3.1.2 同样在Savle上生成密钥对,并添加到Master授权中,就可以实现相互无密码登录了。

ssh-keygen -t rsa

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

scp ~/.ssh/id_rsa.pub [email protected]:~/

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

验证登录即可。

注意几点:  www.2cto.com

1> SSH的配置文件一定要修改,而且修改后要重启

2> 认证文件一定要采用追加方式:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

3> authorized_keys文件的权限一定要修改为600

4> .ssh的文件如果是手动创建的话权限一定要修改为700

时间: 2024-10-01 04:40:14

无密码ssh远程机器的相关文章

shell ssh 远程机器 追加文件内容

在host1上,把下面的两行内容通过ssh追加到host2上的/etc/ca-certificates.conf文件中 I am a student Are you ok ssh host2 "echo -e \"I am a student\nAre you ok\" >> /etc/ca-certificates.conf" 注意: 上面有两对"",中间的一对要用 \ 转义.

ssh 无密码登录远程服务器

在讲下文之前,我都默许大家都已经生成了自己的ssh公钥和密钥,在自己的~/.ssh 目录下面,如果没有,请使用 ssh-keygen -t rsa -C "你的邮箱" 命令生成 1,上传自己的公钥到远程主机中 公钥生成后,一般是 ~/.ssh/id_rsa.pub 文件,后面的pub就是public开放的意思,没有pub的就是私钥了 vim ~/.ssh/id_rsa.pub 打开你的公钥文件,复制到远程主机 ~/.ssh/authorized_keys 文件中 authorized_

SSH 无密码访问其它机器 和 Windows 上 putty 无密码访问 Linux 机器

1. 从一台 Linux 机器(ubuntu1)上无密码访问其它机器(ubuntu2) (1)登录 ubuntu1 并切换到用户比如 s1 (2)运行 ssh-keygen -t rsa (3)运行cd .ssh (4)运行 cat id_rsa.pub >> authorized_keys.现在运行  ssh localhost 就可以无密码登录到本机. (5)运行 scp authorized_keys [email protected]:/home/s1/.ssh/authorized_

python实现动态更新远程机器列表的SSH登录脚本

在公司里, 常常要远程到很多机器上执行命令.机器列表会逐渐增多, 记忆这么多机器的IP或域名显然不是人脑所擅长的.因此, 需要保持一份SSH机器列表,从这些机器列表生成一个用于SSH到机器列表中机器的脚本, 执行该脚本就可以SSH到指定机器上. 必需文件:  sshlist.txt,  ssh_tpl.sh , updatessh.py  ;  输出文件:  ssh.sh SSH 机器列表: sshlist.txt 127.0.0.0.1 ; 本地测试 1.1.1.1 ; 开发环境 2.2.2.

ssh和alias快速登录远程机器

Linux:本地机器local登录远程机器remote 在local机器下的~/.ssh文件夹生成公钥和密钥: ssh-keygen -t rsa -P '' 首先确保remote机器中存在~/.ssh文件夹;不存在创建即可. 创建好.ssh文件夹后,将local的公钥文件.id_rsa.pub通过scp拷贝到远程机器remote中(username和ip是remote机器的,scp需要密码) scp .ssh/id_rsa.pub [email protected]:/home/usernam

非root用户ssh 执行 sudo远程机器免密钥

非root用户ssh 执行 sudo远程机器免密钥 # 1.登陆192.168.1.10 ssh-keygen -t rsa # 一路回车 # 将公钥添加到认证文件中 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # 并设置authorized_keys的访问权限 chmod 600 ~/.ssh/authorized_keys [[email protected] ~]# cat /root/.ssh/id_rsa.pub          

putty 无密码ssh linux

在redhat es 5.5 安装无密码登陆的openssh(系统自带)1. 确保sshd正常启用 查看 /etc/rc.conf 是否存在 sshd_enable="YES" :如果没有添加进去并人工方式启动#/etc/rc.d/sshd start :然后查询 22端口是否启动:#sockstat -4l root sshd 8085 4 tcp4 *:22 *:* 2. 配置 OpenSSH 针对 OpenSSH 服务程序和客户端的系统级配置文件在 /etc/ssh 目录中.ss

ssh远程登录命令

linux下使用ssh登陆其他linux服务器 #ssh -l root -p 23100 192.168.101.211 其中-l指用什么账号来登陆,-p是对方服务器的ssh端口,后面是对方服务器的ip地址 把当前一个文件copy到远程另外一台主机上,可以如下命令. scp /home/daisy/full.tar.gz [email protected]172.19.2.75:/home/root 然后会提示你输入另外那台172.19.2.75主机的root用户的登录密码,接着就开始copy

SSH远程管理服务实战

目录 SSH远程管理服务实战 1.SSH基本概述 2.SSH相关命令 3.Xshell连接不上虚拟机 4.scp命令 5.sftp命令 6.SSH验证方式 7.SSH场景实践 8.SH安全优化 9.交互expect[扩展] 10.免交互sshpass[扩展] SSH远程管理服务实战 1.SSH基本概述 SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输.确保了数据传输安全.那SSH服务主要功能有哪些呢? 1.提供远程连接服务器的服务2.对传输的数据进行加密 那么