转载请注明出处。
sshd 是 ssh 套件中的监听守护模块,只有运行 sshd 监听程序的主机才能被远程主机通过 ssh 登录。在某些情况下(比如在一台没有系统权限的主机上,系统的 ssh 限制了某些登录)需要以普通用户的身份在某一端口启动 sshd 服务,以方便地进行 ssh 登录。本文便总结了经过实践验证的启动 sshd 的方法。
- 设置 sshd 配置文件
mkdir etc cp /etc/sshd_config etc $ vi etc/sshd_config [modify the config file.]
即将系统的 sshd 配置文件 /etc/ssh/sshd_config 拷贝至需要的位置。如果没有权限,从其他系统找一份配置文件也是可以的。
在配置文件中需要着重注意的部分:
Port 30000 #设置需要监听的端口 ListenAddress 10.0.0.1 #设置在哪个地址上监听,通常多网卡时须设置 HostKey /home/linhan/etc/ssh_host_dsa_key #设置 HostKey HostKey /home/linhan/etc/ssh_host_rsa_key UsePrivilegeSeparation no #因无系统权限,不设置权限分离 UsePAM yes #是否需要使用 Linux-PAM
在上面的配置中,最后一行 UsePAM,在用密码登录验证时有用,否则可能会出现正确的密码也无法验证从而只能用密钥登录。如果是自己编译的 Openssh,需要在 configure 时加上 –with-pam 选项,而这要求系统已经安装了 pam-devel 包。
如果在上述配置文件中指定了特定的密钥文件,则还需要生成相应的密钥。在本例中,只需执行下面两条命令:
$ssh-keygen -t dsa -f /home/linhan/etc/ssh_host_dsa_key -N '' $ssh-keygen -t rsa -f /home/linhan/etc/ssh_host_rsa_key -N ''
sshd 的运行需要提供绝对路径,可以首先通过“$which sshd”确定,不过在系统中一般是固定的位置:
$/usr/sbin/sshd -f etc/sshd_config
如果顺利,应该已经可以从远程主机登录了。在另一台主机上执行:
$ssh -p 30000 user@10.0.0.1
如果配置文件中设置使用了 Linux-PAM,那么应该可以通过密码登录。否则,需要首先将客户机的rsa公钥添加到服务器端的 ~/.ssh/authorized_keys 文件中,可以在客户机上登录到自身,再将相应的字段复制到服务器端——至于怎么复制,就要自己想办法了!