SSH: 不仅仅是用来远程登录

风行水上 @ 2012-04-26 16:23:31
标签:

SSH是Secure Shell的缩写,是一种网络通讯协议。

这里所谓的secure(安全)是相对于ftp、pop3、telnet等这类以明文传输密码的通讯协议来说的。

服务器端ssh的版本

通过telnet命令可以知道服务器是否支持SSH协议,以及SSH协议的版本。

$ telnet hostname 22
...
SSH-1.99-OpenSSH_3.9p1
exit

SSH协议对应的端口是22。上面例子的输出表明使用的是OpenSSH的SSH-1。除了SSH-1,还有SSH-2版本。

SSH的用户登录认证

通过用户名和密码登录

这和telnet类似。用户通过用户名和密码登录。缺点主要是两点:

  • 每次都要输入密码 (本地保存密码的话则不安全)
  • 如果server被不法用户攻击,有丢失密码的风险

通过密钥对登录

用户创建一对密钥:

  • 公有密钥(Public Key):放置于要登录的机器上
  • 私有密钥(Private Key):用于客户端登录时使用

这样一来,用户登录一台机器时,就不再需要自己的帐户密码了。服务器通过登录用户名找到对应的Public Key,并用此密钥核对客户端的身份。

密钥储存在哪里

对于放置在服务器端的公有密钥来说,其通常保存在文件~/.ssh/authorized_keys中。每行一个公有密钥。 其格式大致如下:

ssh-rsa  AAAAB3NzaC1yc2EAAAABJQAAAIEAuMjglYIJMVFQ... rsa-key-20120426

三个字段分别表示加密方法、密钥内容、标识字符串(可选)。

客户端的Private Key一般通过一个口令(passphrase)加密存储以保证安全,在使用时需要先用这个口令对密钥进行解密。通常由客户端软件提示输入口令。

密钥对的生成

在linux系统中,可以用命令ssh-keygen生成密钥对。

在Windows系统中,使用putty的话,可以用PuttyGen程序生成。

Host Fingerprint

Host Fingerprint(机器指纹)的主要用途是防范中间人攻击

IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
25:8f:d7:01:1d:2d:de:30:db:42:ba:c3:28:0c:33:5b.
Please contact your system administrator.
Add correct host key in /home/$user/.ssh/known_hosts to get rid of this message.
Offending key in /home1/$user/.ssh/known_hosts:5
Host key verification failed.

如果确认是安全的,修复的办法是删除相应的行(Offending key ...行显示了文件和行号)。

可以借助sed命令: sed -i '5d' ~/.ssh/known_hosts

也可以通过指定不检查host来跳过该问题(不建议): ssh -o 'StrictHostKeyChecking no' user@host

SSH客户端

网络资源

标签:

分享到:
comments powered by Disqus

27/31ms