2016-12-07 44 views
0

标题说大部分,但我会更具体:有没有办法通过ssh登录到服务器上scp文件到本地机器上?

当我想从scp我的本地机文件到服务器,我会用:

[email protected]_hostname:~$ scp local_file.txt [email protected]_server:~/ 
[email protected]_servers password: 
local_file.txt    100%  0  0.0KB/s  00:00 
[email protected]_hostname:~$ 

正如你所看到的,我被提示输入该ssh服务器的密码,并且该文件将被安全地复制。


至此,如果我想从远程SSH服务器复制到我的本地机器的文件时,我一直在使用scp这样的:

[email protected]_hostname:~$ scp [email protected]_server:~/server_file.txt ~/ 
[email protected]_servers password: 
server_file.txt    100%  0  0.0KB/s  00:00 
[email protected]_hostname:~$ 

正如你所看到的,我问再次输入密码。

[email protected]_hostname:~$ ssh [email protected]_server 
[email protected]_servers password: 
server login success! 
[email protected]_server:~$ scp server_file.txt [email protected]_hostname:~/ 
[email protected]_sercer:~$ 

这是可能的:如果我已经通过ssh的东西沿着这行登录到服务器这将是很好跳过密码?还是实际?

+0

据我所知,这是不可能直接使用'ssh'和'scp'。您可以使用其他实用程序。一个非常灵活的是'netcat'。看看这个教程:https://nakkaya.com/2009/04/15/using-netcat-for-file-transfers/ – arkascha

+0

或者也许用rsync? – Hackerman

回答

1

当你将ssh放入远程主机时,建立一个反向通道。

ssh -R 12345:localhost:22 [email protected]_server 

远程主机上的12345端口现在连接到端口22的主机上,这意味着12345连接在现有ssh连接到本地机器上的sshd服务隧道回来。

在远程机器上,运行

scp -P 12345 server_file.txt localhost:~/ 

将文件复制回你的home目录。

如果你不想记住使用-R,您可以添加以下到您的本地.ssh/config文件:

Host * 
    RemoteForward 12345:localhost:22 

和隧道将被自动设置为任何连接。

您也可以指定端口为0(0:localhost:22),让ssh为您选择一个可用端口;连接建立后,所选端口将写入标准输出。

+0

remote_user @ some_server:〜$ scp -P 12345 test.txt localhost:〜/ connect_to localhost port 22:failed。 ssh_exchange_identification:由远程主机关闭的连接 丢失连接 –

+0

确保您实际上在端口22上运行'sshd'。 – chepner

相关问题