Linux服务器间无需密码的SSH配置

上一篇 / 下一篇  2007-10-06 00:07:47 / 个人分类:Linux系统配置

51Testing软件测试网po Q0ip ?)xH/oy

openSSH的默认设置是允许root可以直接login. (PermitRootLoginyes), 暂且保留这种设置,我们先考虑如何用SSH直接从A到B不需要密码,假设用用户root登录到A,想SSH到B也作为root不需要密码。

W)R0y8m:BO0
  1. 分别从A和B上登录作为root后运行ssh-keygen,目的是简单地在/root下创建目录.ssh,当提示输入51Testing软件测试网%_$PKz O%RA S x@
      passphase时打入两次回车。这将生成/root/.ssh/identity and/root/.ssh/identity.pub
  2. 测试一下,从A登录作为root,打入#ssh B,会要求提示root password。
  3. 现在从A登录作为root,运行scp /root/.ssh/identity.pubB:/root/.ssh/authorized_keys。
    H"~)y]2aw"iR K0文件名必须不能弄错。
  4. 现在再从A运行#ssh B则不需要密码了:)
基本原理:

:UvB.qE2Ds0    如果你希望从A作为用户user1 SSH 到B作为用户user2,若要用RSA键对法认证且不需要密码,则B上的ssh后台程序拿出~user2/.ssh/authorized_keys中的与A有关的RSA公钥来对A上的以user1身份运行的ssh客户程序进行挑战,前面我们已经把A上的identity.pub拷贝到B上作为authorized_keys了。则A保持私钥identity,而B上的sshd又拿出A的公钥来挑战,因此成功,你可以加很多行到authorized_keys以允许其它服务器的公钥可以加进来。51Testing软件测试网*j2`*X'L_ME

实际应用举例:

C/b Q-Fz+v rj0使用SSH命令连接一台服务器,默认情况下会提示我们输入密码:
|I}D$T6Js;fU8i0willis:~ # ssh 192.168.4.24951Testing软件测试网G,K({1{? a
Password:51Testing软件测试网hP|s3G:p

n1Gh,MH#N0创建密钥:
G!_&?]*j4j,}N0willis:~ # ssh-keygen -t rsa
r2@zA8b,{$zSz5g0Generating public/private rsa key pair.51Testing软件测试网`7Ka$jl|"Y0iN
Enter file in which to save the key (/root/.ssh/id_rsa):51Testing软件测试网/k8tA+d(n%EY\nXk
Enter passphrase (empty for no passphrase):
`A6y5cD v0Enter same passphrase again:51Testing软件测试网%_2Z*Is B.B2j1~
Your identification has been saved in /root/.ssh/id_rsa.
x%s&ns&{9^ p_J'b]0Your public key has been saved in /root/.ssh/id_rsa.pub.
j0v J+R9u9t0i!X zt0The key fingerprint is:
_nk4| Tz9p9m2W0ae:1e:a6:49:b9:51:1e:27:bc:a6:7d:dd:bb:6b:1a:55root@willis
s6xW&Y(\Qu LP0willis:~ #51Testing软件测试网+A&vkWA

51Testing软件测试网8x&W Z:j@ wp

注意:输入上面的ssh-keygen命令后,不用输入任何信息,直接按回来就可以了,其中参数-t rsa是加密的类型,创建后的密钥在用户主目录中的隐藏目录.ssh中,

2F,c%T:|/V8YA051Testing软件测试网|Q_/`S+_ v

willis:~/.ssh # ls
_Qq J;` ?0authorized_keys id_rsa id_rsa.pub known_hosts
^}JU0C1G0willis:~/.ssh #

T2mv-q"}R0

$m9n5\-noZetK*d;F0id_rsa.pub是公钥,id_rsa是私钥,known_hosts保存着所有已发生连接服务器的信息,需要将公钥里的信息拷贝到登陆服务器用户主目录中的隐藏目录.ssh的文件authorized_keys中,

U&^2_)tFU0

E4w+qM%V(AU0先看看*.pub文件的内容:51Testing软件测试网\ QgY_w?
willis:~/.ssh # cat id_rsa.pub
4X3Uq!`Z%iT)f!?_u0ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAz61yRO3qGkjNPFpYd9nW4O5F1byghbrCXlxMtB3IKDVHxX9ojybRzZcDDl6KN8w0hq08vWpgjlC51Testing软件测试网#y8B q+GQEe
GkYcU75BXCk7zA/5jABejIUOMzgzC+A9b0eNm9ebTInXmfWlYf3P+axDgUlJ84MTAxa68l+Q/6uYc3KbVSsttB6/F37DRZGlTdSyKn51Testing软件测试网6_'b+K:u+h Qi}#f
19BimZtZ/M7lyMtqJpYovypxkesbkJjW85sIr2lZeuxqRZWz1ixBwMQyljUvwbHvCS91mzjS76ngKchOCyt9XbwHuL/cXHKMOHgcb51Testing软件测试网 N E5h*[zud
uDqZS8kZFycwVkaNc5f+pZuQ/W8X9Iei35yUEa8qI53Z9o/09fBdOJbl7W5eXLyw==root@willis51Testing软件测试网+W0},EW)o1~
willis:~/.ssh #

H(V J{W%~"YK E051Testing软件测试网#n2]/d.\m:] @!M

拷贝文件:51Testing软件测试网)Z(l~N$N
willis:~/.ssh # scp id_rsa.pubroot@192.168.4.249:/root/.ssh/192.168.4.49
W!Ke8_#v#x9Y"J7n0Password:51Testing软件测试网Vn xs@Wl;L
id_rsa.pub 100% 394 0.4KB/s 00:0051Testing软件测试网kF(HbE6R%|
willis:~/.ssh #

$s-sg%O~DV0

YB1v[X!pc2w {0scp命令和ssh命令都属于同一个包,前面的s都表示secure,这样无论在传输数据或是远程连接都是经过加密的,不用担心数据被直接截获。拷贝过去之后,先登陆到这台服务器上。
E}[rf4]9s i \0willis:~/.ssh # ssh 192.168.4.249
VX2a/k3EOo0Password:51Testing软件测试网6a-\@ b(Q
Last login: Sun Jul 8 11:15:18 2007 from 192.168.4.49
'R-?H,Vggwi @5v0Have a lot of fun...51Testing软件测试网E-t|[1jX~
amd64:~ #51Testing软件测试网yEA;u!zUl

8S4r]ib|$o0amd64:~ # cd .ssh51Testing软件测试网8k,YP5op*Qy~/J
amd64:~/.ssh # ls51Testing软件测试网m"q8X/zI ?v
192.168.4.49 authorized_keys authorized_keys2 id_rsa id_rsa.pub known_hosts51Testing软件测试网0{ v!|a&f"plN
amd64:~/.ssh #51Testing软件测试网 _L8j C#CLD

51Testing软件测试网5n(| M+h"S[b)F([

192.168.4.49就是刚才传过来的公钥文件,为了保证文件的唯一和可管理性,建议用这个文件命名的方式,要不然信任关系建多了就不好管理了,将这个文件的内容复制到authorized_keys文件中:
*xc vr({CQ0amd64:~/.ssh # cat 192.168.4.4951Testing软件测试网P;BQ:n pz
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAz61yRO3qGkjNPFpYd9nW4O5F1byghbrCXlxMtB3IKDVHxX9ojybRzZcDDl6KN8w0hq08vWpgjlCGkYcU75BXCk7zA/5jABejIUOMzgzC+A9b0eNm9ebTInXmfWlYf3P+axDgUlJ84MTAxa68l+Q/6uYc3KbVSsttB6/F37DRZGlTdSyKn19BimZtZ/M7lyMtqJpYovypxkesbkJjW85sIr2lZeuxqRZWz1ixBwMQyljUvwbHvCS91mzjS76ngKchOCyt9XbwHuL/cXHKMOHgcbuDqZS8kZFycwVkaNc5f+pZuQ/W8X9Iei35yUEa8qI53Z9o/09fBdOJbl7W5eXLyw==root@willis51Testing软件测试网b(QQ/^Oj\[
amd64:~/.ssh # cat 192.168.4.49 >> authorized_keys

`:k`m \Ta051Testing软件测试网h N6b8{2I K3I.VGH

注意:要用“>>”这个符号,该符号表示追加,不会将以前的内容删掉,默认情况下,authorized_keys这个文件是不存在的,需要手动来创建,因为比较长不太好记忆,可以通过这个方法来查找:51Testing软件测试网.I+q^)unU/N

8[My7j2CL&X2k0amd64:~/.ssh # man ssh-keygen51Testing软件测试网)B0yhaoerC
显示帮助信息后,搜索"auth"这个关键字就可以了,下面就让我们重新登陆测试一下,先退出当前登陆的主机环境:

@*Bbd4G?vvQ0

2W&C!?,qT;gE0amd64:~/.ssh # exit

x#Lv{9RV+Q E0

9jQ8Js`qu V0重新SSH连接:
d wv RzE_ps0willis:~/.ssh # ssh 192.168.4.249
4Gh+|T(SHM0Last login: Sun Jul 8 11:26:41 2007 from 192.168.4.49
:S!W lnFf5kK0Have a lot of fun...
qVd*\3m0amd64:~ #51Testing软件测试网v.w m^}

51Testing软件测试网d#| E wl;mX'I r(M

如果配置和文件名的拼写都正确,那么将不会再提示输入密码的信息,根据我的经验,大多数配置失败都是因为authorized_keys的文件命令有误,所以要多多注意。好了!配置到这里,SSH的信任关系就成功了,虽然很简单,但有很多概念性的东西需要我们掌握,如果想进一步了解,可以看看相关的帮助文档,还有/etc/ssh目录中的SSH配置文件
r$DS1F,[#W O$]051Testing软件测试网jF5Z yz2@8e


TAG: Linux SSH 无密码 Linux系统配置

 

评分:0

我来说两句

Open Toolbar