分类: LINUX
2010-05-21 10:44:00
首先了解一下加密技术,加密技术通常通过所谓的一对公钥(即public keys 和 private keys)进行加密与解密当SSH服务器主机启动后,主机会产生一个公钥,而客户在与服务器进行连接时,可以通过客户自行产生的密钥连接服务器而客户端在与服务器进行连接时,可以通过随机产生的密钥来连接服务器,也可以通过服务器提供的私钥来进行连接,这与连接时候加密版本有关,当数据由Server端传送到client时,这些数据先经过的公钥(public key)进行加密,所以在传输过程中这些数据是加密的,等这些经过公钥(public key)加密后,就可以通过所谓的私钥进行解秘。SSH有两种
版本的连接模式
SSH version 1
每台机器都可以使用RSA加密方式产生的一个1024位的RSA Key,这个RSA的加密方法来产生公钥与钥方法,version 1 的整个连接简单加密步骤如下:
1. 每次SSH daemon(sshd)启动是时都产生一个768位的公钥(或server key)并放在Server中
2. 若有的客户请求连接,server会将这个公钥穿给客户,Client通过对比本身的RSA加密方法来确认这个公钥
3. 在Client接收这个768位的server key 之后 client自己会产生一个256位的私钥(host key),并且以加密方式将server key 与host key凑成完整的key
并把这传给server
4. 之后进行连接就以这个1024位的key进行数据的传递
5. clinet端的256位是随机产生的,所以你本次连接于下次连接使用的Key是不一样的。
SSH version 2
与version 1 不同的是,version 2 中将不产生server key,所以,当client端连接到Server端是,两者通过Diffie-Hellman的密钥交换产生一个共享key,之后两者通过类似Blowfish的算法进行同步加密操作
了解完基本的原理以后我们来做不用密码即可以登陆的ssh用户
我们可以把client产生的key复制到server中这样,以后client登陆server时,
由于两者ssh要连接信号传递中就已经对比过key,因此可以直接进入数据传 输 接口而不用密码访问。
1. 首先在client上建立public Key和private key,需要使用ssh-keygen命令
[root@localhost .ssh]# ssh-keygen –t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): <---按enter
Enter same passphrase again: <---按enter
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:
e8:
2.
并修改权限为user可读
3 最后,将Public Key 放在任何一个你想登陆主机server中的某user的宿主目录
下的.ssh/子目录人证文件中即可。
4 现在192.168.0.6是client 想连接到192.168.0.8上用ssh-keygen –t rsa产生key
(-t参数是使用和种密码)这时在我的/root/.ssh/里边产生了三个文件分别是公钥
(id_rsa.pub)与私钥(id_rsa)另外要注意的就是id_rsa文件权限他必须是-rw------否则回不安全,id_rsa.pub就是公钥,把这个放到server目录上去用命令
[wds@localhost .ssh]# sftp id_rsa.pub
[wds@localhost .ssh]# passwd
[wds@localhost .ssh]# put id_rsa.pub
[root@localhost .ssh]# uploading id_rsa.pub to /root/.ssh/
[root@localhost .ssh]# exit
然后到服务器上去192.168.0.8
[root@localhost .ssh]# ssh –l root 192.168.0.8
[root@localhost .ssh]# cd /root/.ssh/
[root@localhost .ssh]#more id_rsa.pub >> authorized_keys 这样就可以了
[root@localhost .ssh]#
返回client上192.168.0.6
[root@localhost .ssh]# exit
[root@localhost .ssh]# ssh 192.168.0.8
这样无需要密码直接登陆到服务器上了