今天在配置 svn 钩子的时候,想要登录到另一台服务器上时,指定明文密码进行ssh登录的时候,总是没有响应的停滞在那里了,命令如下:

  • sshpass -p 用户明文密码 ssh 用户名@远程服务器 IP 地址

因为这是连的一台新的服务器,最初并没有进行 ssh 登录测验,所以在使用sshpass 登录之前一定要先测试ssh登录。
接着查了下相关资料,并作出了如下的归纳以便日后类似问题的查看。


sshpass 的定义:ssh 登陆不能在命令行中指定密码,sshpass 的出现则解决了这一问题。它允许你用 -p 参数指定明文密码,然后直接登录远程服务器,它支持密码从命令行、文件、环境变量中读取。

第一种使用情况:直接远程连接某台主机

  • 命令:sshpass -p xxx ssh root@远程服务器IP地址

第二种使用情况:远程连接指定 ssh 的端口:

  • 命令:sshpass -p 123456 ssh -p 1000 root@远程服务器IP地址 (当远程主机不是默认的22端口时候)

第三种使用情况:从密码文件读取文件内容作为密码去远程连接主机

  • 命令:sshpass -f xxx.txt ssh root@远程服务器IP地址

第四种使用情况:从远程主机上拉取文件到本地

  • 命令: sshpass -p '123456' scp root@远程服务器IP地址:/home/test/t ./tmp/

在配置 svn 钩子时碰到的另一个问题是,使用非 root 账户配置远程钩子时,需要在远程服务器上使用非 root 账户进行检出,因为使用 root 账户检出后,在进行 svn 提交钩子更新时将出现权限问题。

参考资料:
sshpass简介及安装 https://my.oschina.net/Julian1988/blog/144261
sshpass的使用方法 https://www.cnblogs.com/kaishirenshi/p/7921308.html