无需密码通过 ssh 复制文件

无需密码通过 ssh 复制文件

我的主管允许我通过 ssh 登录到我的本地计算机来远程访问他的计算机。虽然我已连接(并且可以通过 vi、emacs 查看我想要的任何文件),但我如何在没有密码的情况下将文件复制到本地计算机?

scp例如,提示输入密码。从互联网搜索来看,创建公钥以绕过密码似乎scp需要在安装过程中至少输入一次密码。由于我不是这台电脑的管理员,因此无法安装新程序,正如建议的那样这里

答案1

如果您在远程计算机上有一个活动的 shell,并且假设终端仿真器支持复制粘贴(所有流行的终端仿真器都支持),那么您应该能够在生成公钥后复制粘贴该公钥;例如tee >> ~/.ssh/authorized_keys,然后粘贴公钥文件的内容即可。您需要确保结果中没有多余的换行符。

在回答这个问题时,我当然假设你已经咨询了你的主管并获得了进行此更改的授权。否则,这样做最多会让你的工作面临极大的风险;一个不值得信任的员工比没有员工更糟糕,坦率地说,如果你对我的账户这样做而我事先没有批准,我会当场解雇你。

答案2

SSH 允许您在远程系统上运行命令。如果不指定任何命令,它会创建一个 pty 并启动 shell,这可能是您习惯调用它的唯一方式。

如果您想要运行 cat 来显示文件而不是启动 shell,只需运行:

ssh remote_host cat /remote/file/to/view

这将显示远程文件并返回到本地 shell 提示符。

如果您想保存该文件,只需将输出重定向到您想要保存为的本地文件:

ssh remote_host cat /remote/file/to/view > local/file/to/create

如果要复制整个目录,则可以通过 ssh 会话传输 tar 的输出:

ssh remote_host tar cf - /dir/to/copy | tar xvf -

如果您在远程进程中指定了绝对路径(如上例所示),则本地 tar 进程(提取存档的进程)将删除开头的 /。该示例将在本地主机的当前目录中创建 dir/to/copy 文件夹层次结构。如果您想删除其他路径组件,请使用该--strip-components选项。

另外,如果您想连接到主机并在一个步骤中在 vi 中编辑文件,您必须告诉 ssh 使用以下选项为您创建一个 pty -t

ssh -t remote_host vi file/to/edit

如果以交互方式调用它(未指定命令,因此它会启动 shell),它会很聪明地默认创建 pty。如果指定命令,则必须明确告诉它创建 pty。

有关更多详细信息,请参阅 ssh 手册页。

相关内容