首页 > 代码库 > 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