文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>SSH验证

SSH验证

时间:2006-03-09  来源:nothing9

9.5 SSH

SSH(Secure SHell)是在 Internet 中建立连接的安全途径。OpenSSH 是一个自由的 SSH 实现软件,它包含 在Debian 的 ssh 软件包中。

9.5.1 SSH 基础

首次安装 OpenSSH 服务器和客户机。

 # apt-get update && apt-get install ssh

要运行 OpenSSH 服务器,还得屏蔽掉 /etc/ssh/sshd_not_to_be_run。

SSH 有两个验证协议:

  • SSH 协议 第 1 版:
    • Potato 发布版仅支持该版协议
    • 可用的验证方法:
      • RSA 验证:基于 RSA 密钥的用户验证
      • Rhosts 验证:基于 .rhosts 的主机验证(不安全,有缺陷)
      • RhostsRSA 验证:.rhosts 验证与 RSA 主机密钥相结合(有缺陷)
      • ChallengeResponse 验证:RSA Challenge-response 验证
      • Password 验证:基于 password 的验证
  • SSH 协议 第 2 版
    • Woody 后继版本将以该版协议为主
    • 可用的验证方式:
      • Pubkey 验证:基于公共密钥的用户验证
      • Hostbase 验证:.rhosts 或 /etc/hosts.equiv 验证与公共密钥客户端主机验证相结合(有缺陷)
      • ChallengeResponse 验证:challenge-response 验证
      • Password 验证:基于 password 的验证

如果系统正迁移到 Woody 或使用非 Debian 系统,请注意版本差异。

更多信息请参阅 /usr/share/doc/ssh/README.Debian.gz、ssh(1)、sshd(8)、ssh-agent(1) 和 ssh-keygen(1)。

下面是一些关键的配置文件:

  • /etc/ssh/ssh_config:默认的 SSH 客户机。参阅 ssh(1)。其中重要的项目有:
    • Host:作用于所有与该关键字后所列出的主机相匹配的主机,它们须遵守下面(处于本host 关键字之后下一个 host 关键字之前的内容)所列的各项条款。
    • Protocol:规定所使用的 SSH协议的版本。默认为“2,1”。
    • PreferredAuthentications:规定 SSH2 客户端验证方式。默认为“hostbased,publickey,keyboard-interactive,password”。
    • PasswordAuthentication:如果想使用密码登录,须确认该选项没有设置成 no。
    • ForwardX11:默认为关闭状态。可使用命令行选项“-X”重载它。
  • /etc/ssh/sshd_config:默认的 SSH 服务器。参阅 sshd(8)。其中重要的项目有:
    • ListenAddress:规定 sshd 监听的本地地址。允许多重指定。
    • AllowTcpForwarding:默认为关闭状态。
    • X11Forwarding:默认为关闭状态。
  • $HOME/.ssh/authorized_keys:默认公共密钥列表,客户机可使用这些密钥连接本主机的该用户帐号。参阅 ssh-keygen(1)。
  • $HOME/.ssh/identity:参阅 ssh-add(1) 和 ssh-agent(1)。

下面的操作将从客户机建立一个 ssh 连接。

 $ ssh [email protected]
$ ssh -1 [email protected] # Force SSH version 1
$ ssh -1 -o RSAAuthentication=no -l username foo.host
# force password on SSH1
$ ssh -o PreferredAuthentications=password -l username foo.host
# force password on SSH2

在用户眼里,ssh 的功能相当于一个更灵巧更安全的 telnet(will not bomb with ^])。

9.5.2 发送端口 SMTP/POP3 微调

在本地机器上执行下面的命令,可以建立一个连接本地主机 4025 端口和远程服务器 25 端口的管道,以及一个连接本地主机 4110 端口和远程服务器 110 端口的 ssh 连接。

 # ssh -q -L 4025:remote-server:25 4110:remote-server:110 \
username@remote-server

在 Internet 上可使用该方法建立与 SMTP/POP3 服务器的安全连接。记得在远程主机的 /etc/ssh/sshd_config 中设置 AllowTcpForwarding 值为 yes。

9.5.3 用更少的密码建立连接 – RSA

使用 RSAAuthentication(SSH1协议)或 PubkeyAuthentication(SSH2协议)可不必记住每个远程系统的连接密码。

在远程系统上,在 /etc/ssh/sshd_config 中分别设置“RSAAuthentication yes”或“PubkeyAuthentication yes”。

然后在本地生成验证密匙,在远程系统上安装公共密钥:

 $ ssh-keygen # RSAAuthentication: RSA1 key for SSH1
$ cat .ssh/identity.pub | ssh user1@remote \
"cat - >>.ssh/authorized_keys"
...
$ ssh-keygen -t rsa # PubkeyAuthentication: RSA key for SSH2
$ cat .ssh/id_rsa.pub | ssh user1@remote \
"cat - >>.ssh/authorized_keys"
...
$ ssh-keygen -t dsa # PubkeyAuthentication: DSA key for SSH2
$ cat .ssh/id_dsa.pub | ssh user1@remote \
"cat - >>.ssh/authorized_keys"

今后可用“ssh-keygen -p”来改密码。最后记得检查一下设置,可做个连接测试,如遇问题,执行“ssh -v”。

你可以通过在 authorized_keys 里添加选项来限制主机及运行指定的命令。详情参阅 sshd(8)。

注意 SSH2 有 HostbasedAuthentication,要使它工作,必须同时在服务器端的 /etc/ssh/sshd_config 文件中和客户机端的 /etc/ssh/ssh_config 或 $HOME/.ssh/config 文件中设置 HostbasedAuthentication 为 yes。

9.5.4 处理外来的 SSH 客户端

下面是其它一些非类 Unix 平台的免费 SSH 客户端。

Windows puTTY (GPL) Windows (cygwin) SSH in cygwin (GPL) Macintosh Classic macSSH (GPL) [注意 Mac OS X 包含 OpenSSH;在终端应用程序中使用 ssh]

参阅 SourceForge.net的站点文档,“6. CVS Instructions”。

9.5.5 设置 ssh-agent

使用 passphrase 来保护 SSH 认证密匙会更安全,如果还没有设置,可使用 ssh-keygen -p 来设置。

用更少的密码建立连接 – RSA, 第 9.5.3 节中描述了如何使用一个基于密码的远程主机连接,将公共密钥(例如~/.ssh/id_rsa.pub)放入远程主机的 ~/.ssh/authorized_keys。

 $ ssh-agent bash # 或者用 zsh/tcsh/pdksh 这些程序代替。
$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/osamu/.ssh/id_rsa:
Identity added: /home/osamu/.ssh/id_rsa (/home/osamu/.ssh/id_rsa)
$ scp foo [email protected]:foo
... no passphrase needed from here on :-)
$^D
... terminating ssh-agent session

对于 X 服务器,普通 Debian 启动脚本会将 ssh-agent 作为一个父进程执行。所以只需执行一次 ssh-add 即可。

详情参阅 ssh-agent(1) 和 ssh-add(1)。

9.5.6 SSH 问题处理

如果遇到问题,检查一下配置文件的访问权限,并使用“-v”选项运行 ssh。

如果是 root 身份,遇到连接防火墙出错的情况,可使用“-P”选项;它规定 ssh 使用服务器的1 – 1023 以外的端口。

如果与远程站点的 ssh 连接突然停止工作,很可能是因为系统管理员修补系统造成的,host_key 在系统维护过程中被更改。在查明了事情真象并确定并不是有人试图冒充远程主机非法入侵之后,从本地机器的 $HOME/.ssh/known_hosts 中删除 host_key 项目就可以恢复连接了。

相关阅读 更多 +
排行榜 更多 +
试着飞手游下载

试着飞手游下载

休闲益智 下载
血染小镇(功能菜单)中文版下载

血染小镇(功能菜单)中文版下载

飞行射击 下载
泰坦之旅高爆版下载

泰坦之旅高爆版下载

角色扮演 下载