Ruby 利用 net-ssh 服务器之间发送文件

fengzhilian818 · 2013年12月10日 · 最后由 seoaqua 回复于 2013年12月23日 · 3466 次阅读

我尝试用用一下代码实现向本地另外一台服务器发送文件 Net::SSH.start('106.80.241.252', 'root', :password => "root123") do |ssh| ssh.sftp.connect do |sftp| Dir.foreach('.') do |file| puts file end end

可是目前连接报:Errno::ECONNREFUSED (No connection could be made because the target machine actively refused it. - connect(2)):求教啊。。。

对方服务器没有在 22 端口上监听/没开 ssh server

你是说对方服务器配置文件要增加 Listen 22

#2 楼 @fengzhilian818 net-ssh 就是通过 sftp 协议把文件通过 ssh tunnel 传到对方服务器上,当然需要对方服务器上有 ssh server 跑着并且在监听端口。

我这边对方服务器器是 mac 机,我在系统偏好设置 => 共享=>勾选允许远程登陆,并在 etc/apache2/httpd.conf 中添加 Listen 22 ,之后仍然出现刚刚的问题,求教

#4 楼 @fengzhilian818 net-ssh 跟 Apache 没有,你要在 httpd.conf 里去掉 Listen 22,勾选了 "允许远程登录“就可以了。你可以用 sudo lsof -i :22 看一下 22 端口有没有在监听。

我看了下,情况如下 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME httpd 3981 root 15u IPv6 0x77e18ed946b6c12b 0t0 TCP *:ssh (LISTEN) httpd 3998 _www 15u IPv6 0x77e18ed946b6c12b 0t0 TCP *:ssh (LISTEN)

还是报错了

#6 楼 @fengzhilian818 你先能命令行 ssh 连接到那台服务器之后,再来用 net-ssh. 至于怎么用 ssh 的话,Google 一下吧。

直接带 password 太危险了吧

配置一下被访问服务器的 authorized_keys 吧,就不用输密码了

需要 登录 后方可回复, 如果你还没有账号请 注册新账号