首页 > 代码库 > openssh

openssh

openssh

1.基础:

telnet:TCP/23端口,认证和数据的传输都是明文

SSH:Secure Shell tcp/22 安全shell  C/S模式

OpenSsh就是开源的ssh实现。

ssh版本:V1、V2但是V1中有缺陷,已经不怎么使用了。

linux下:

Openssh

ssh命令可以实现ssh远程登录(相当于客户端部分)。

 1.ssh -l username Remote_host

 2.ssh -l username Remote_host ‘command‘

 -X 和 -Y是两个用图形的参数,要求本地必须是图形。

sshd是linux上ssh的服务。

windows下:

Putty,SecureCRT,sshsecureshellclient,Xmanager

2.SSH两种安全验证:

从客户端来看,SSH提供两种级别的安全验证:

1.第一种级别是基于口令的安全验证

只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密, 但是不能保证你正在连接的服务器就是你想连接的服务器。这个过程如下:

(1)远程主机收到用户的登录请求,把自己的公钥发给用户。

(2)用户使用这个公钥,将登录密码加密后,发送回来。

(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。这种方式可能会有别的服务器在冒充真正的服务器,将公钥发送给客户端,客户端就会将密码加密后发送给冒充的服务器,冒充的服务器就可以拿自己的私钥获取到密码,也就是受到“中间人”这种方式的攻击。

值得一说的是当第一次链接远程主机时,会提示您当前主机的“公钥指纹”,询问您是否继续,如果选择继续后就可以输入密码进行登录了,当远程的主机接受以后,该台服务器的公钥就会保存到~/.ssh/known_hosts文件中。

  2. 第二种级别是基于密匙的安全验证

需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,

然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,

第二种级别不需要在网络上传送口令。第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能需要10秒,但是相比输入密码的方式来说10秒也不长。


3.用不同的SSh客户端实现密钥登录

在secureCRT下用密钥登录

SSH用RSA登陆:

开启wheel组(在/etc/sudoers设置)

useradd -g wheel  test

passwd test

mkdir  -p /home/test/.ssh/

cd /home/test/.ssh/

用rz将公钥上传到/home/test/.ssh/目录里面

(如果创建公钥的格式是:标准公钥和VanDyke私钥格式,需要用ssh-keygen -i -f转换。如果是OpenSSH密钥格式可直接修改文件名)

ssh-keygen -i -f /home/test/.ssh/Identity.pub > /home/test/.ssh/authorized_keys

chown -R test.wheel /home/test/.ssh/

chmod 700 /home/test/.ssh/

chmod 600 /home/test/.ssh/authorized_keys


在xshell用密钥登陆:

开启wheel组(在/etc/sudoers设置)

useradd -g wheel  test

passwd test

mkdir  -p /home/test/.ssh/

cd /home/test/.ssh/

用rz将公钥上传到/home/test/.ssh/目录里面

mv /home/test/.ssh/id_rsa_1024.pub > /home/test/.ssh/authorized_keys

chown -R test.wheel /home/test/.ssh/

chmod 700 /home/test/.ssh/

chmod 600 /home/test/.ssh/authorized_keys

4.两台linux主机之间如何基于密钥ssh登录。

1.生成密钥对

ssh-keygen -t {rsa,dsa} 生成公钥和密钥

-f 可以指定目录和文件名。

2.将公钥传到对方用户的家目录下的.ssh/authorized_keys

ssh-copy-id -i /path/to/public_Key username@host 这个可以直接将公钥放到指定的地方。

也可以使用scp实现,例如:

scp id_rsa.pub 192.168.101.220:~/.ssh/authorized_keys  

scp 有两个参数 -r 就是传递目录的 -a等价 -rp

scp [option] src dest

 还有一个好用的命令就是sftp这个可以从支持ssh的服务器并且支持sftp的服务器上现在东西,所以

 没有必要去管对方是否开启了ftp服务,并且数据是加密的。

 5.保证ssh安全需要考虑的内容:

    1)密码长度要长,密码要经常改换

2)不要使用默认的端口22 

3)限制登录客户端的地址

4)禁止管理员账户直接登录

5)仅允许指定用户登录

6)使用基于密钥的认证方式登录

7)禁止使用早起的V1版本的ssh。


本文出自 “技术至上” 博客,请务必保留此出处http://wuxiangdong.blog.51cto.com/8274747/1571463

openssh