机器Client的root和机器Server的root之间建立安全信任关系的步骤:

有时候使用scp命令时候,出现-bash: scp: command not found

解决方法:yum install openssh-clients 再运行scp就可以了。


1. 在机器Client上root用户执行ssh-keygen命令,生成建立安全信任关系的证书。

[root@Clientroot]# ssh-keygen -b 1024 -t rsa

Generatingpublic/private rsa key pair.

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

Enter passphrase(empty for no passphrase):           <-- 直接输入回车

Enter samepassphrase again:                          <-- 直接输入回车

Youridentification has been saved in /root/.ssh/id_rsa.

Your public keyhas been saved in /root/.ssh/id_rsa.pub.

The key fingerprintis:

49:9c:8a:8f:bc:19:5e:8c:c0:10:d3:15:60:a3:32:1croot@Client

[root@Clientroot]#

注意:在程序提示输入passphrase时直接输入回车,表示无证书密码。

上述命令将生成私钥证书id_rsa和公钥证书id_rsa.pub,存放在用户家目录的.ssh子目录中。


2. 将公钥证书id_rsa.pub复制到机器Server的root家目录的.ssh子目录中,同时将文件名更换为authorized_keys。

[root@Client root]# scp -p .ssh/id_rsa.pub root@192.168.3.206:/root/.ssh/authorized_keys
root@192.168.3.206's password:          <-- 输入机器Server的root用户密码
id_rsa.pub           100% |**************************|   218       00:00
[root@Client root]#

在执行上述命令时,两台机器的root用户之间还未建立安全信任关系,所以还需要输入机器Server的root用户密码。

经过以上2步,就在机器Client的root和机器Server的root之间建立安全信任关系。下面我们看看效果:

[root@Clientroot]# scp -p text root@192.168.3.206:/root

text                 100%|**************************|    19       00:00

[root@Clientroot]#

成功了!真的不再需要输入密码了。

有可能发生的问题如下:

1)配置了本机(localhost)的ssh的公钥到authorized_keys文件中,但是在ssh连接localhost时仍然提示需要输入密码,后来发现是$HOME/.ssh/authorized_keys这个文件的权限问题引起的。其原因是,不能让所有者之外的用户对authorized_keys文件有写权限,否则,sshd将不允许使用该文件,因为它可能会被其他用户篡改。
命令行的演示如下:

View Code BASH

[hadoop@guest1~]$ cd .ssh/

[hadoop@guest1.ssh]$ ll

total16

-rw-rw-r--1 hadoop hadoop  395Jan1218:37 authorized_keys

-rw-------1 hadoop hadoop 1675Jan1218:36 id_rsa

-rw-r--r--1 hadoop hadoop  395Jan1218:36 id_rsa.pub

-rw-r--r--1 hadoop hadoop  796Jan608:40 known_hosts

#注意这里的authorized_keys文件的权限;这时该文件中的key是不起作用的。


#chmod修改authorized_keys文件的权限

[hadoop@guest1.ssh]$ chmod g-w authorized_keys

[hadoop@guest1.ssh]$ ll

total16

-rw-r--r--1 hadoop hadoop  395Jan1218:37 authorized_keys

-rw-------1 hadoop hadoop 1675Jan1218:36 id_rsa

-rw-r--r--1 hadoop hadoop  395Jan1218:36 id_rsa.pub

-rw-r--r--1 hadoop hadoop  796Jan608:40 known_hosts


#修改后,sshd就可以正常使用authorized_keys文件了

[hadoop@guest1~]$ ssh localhost

Last login: SatJan1218:40:332013from localhost

[hadoop@guest1~]$ exit

logout

Connection to localhost closed.

[hadoop@guest1~]$

后来,我详细查了一下,如果authorized_keys文件、$HOME/.ssh目录或 $HOME目录让本用户之外的用户有写权限,那么sshd都会拒绝使用~/.ssh/authorized_keys 文件中的key来进行认证的。


2)有时候SSH登陆到别的Linux主机上去,但SSH登陆会被禁止,并弹出如下类似提示:

WARNING:REMOTE HOST IDENTIFICATION HAS CHANGED!@@@@@@@IT IS POSSIBLE THATSOMEONE IS DOING SOMETHING NASTY!Someone could be eavesdropping on you rightnow (man-in-the-middle attack)!It is also possible that the RSA host key hasjust been changed.The fingerprint for the RSA key sent by the remote hostis36:68:a6:e6:43:34:6b:82:d7:f4:df:1f:c2:e7:37:cc.Please contact your systemadministrator.Add correct host key in /u/xlian008/.ssh/known_hosts to get ridof this message.Offending key in /u/xlian008/.ssh/known_hosts:2RSA host key for135.1.35.130 has changed and you have requested strict checking.Host keyverification failed.

ssh会把你每个你访问过计算机的公钥(publickey)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告,避免你受到DNS Hijack之类的攻击。

原因:一台主机上有多个Linux系统,会经常切换,那么这些系统使用同一ip,登录过一次后就会把ssh信息记录在本地的~/.ssh/known_hsots文件中,切换该系统后再用ssh访问这台主机就会出现冲突警告,需要手动删除修改known_hsots里面的内容。
有以下两个解决方案:
1.
手动删除修改known_hsots里面的内容;
2.
修改配置文件“~/.ssh/config”,加上这两行,重启服务器。
  StrictHostKeyChecking no
  UserKnownHostsFile /dev/null
优缺点:
1.
需要每次手动删除文件内容,一些自动化脚本的无法运行(在SSH登陆时失败),但是安全性高;
2. SSH
登陆时会忽略known_hsots的访问,但是安全性低;


ssh无密码访问

http://my.oschina.net/u/736500/blog/140623

http://yangrong.blog.51cto.com/6945369/1390760


登陆验证方式:

1)密码验证:使用服务器中的用户名和密码方式登陆;

2)密钥对验证:要求提供相匹配的密钥信息才能通过,很安全。

vim /etc/ssh/sshd_config

 PasswordAuthentication yes     //启用密码验证

 PubkeyAuthentication yes       //启用密钥对进行验证

 AuthorizedKeyFile .ssh/authorized_keys   //指定公钥数据文件

 使用ssh-keygen -t rsa在相应的用户目录下面生成公钥和私钥密钥。


 

ssh登陆到其他主机的错误                

当我使用sshpass登陆到其他主机时,会报错

“root@IP's password:  Permission denied, please try again.”

  1. root密码无误。

  2. iptables关闭。

  3. sshd服务开启。

 

需要修改配置文件/etc/ssh/sshd_config的几个参数。

PasswordAuthentication yes

PermitRootLogin yes

UsePrivilegeSeparation no

重启sshd服务:

#/etc/init.d/sshd restart