普通用户运行sshd

        转载请注明出处。

        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 文件中,可以在客户机上登录到自身,再将相应的字段复制到服务器端——至于怎么复制,就要自己想办法了!

【本文参考】How do I run sshd as a particular user?

发表评论

电子邮件地址不会被公开。 必填项已用*标注