tel*_*tel 6 linux unix cluster ssh scp
我刚刚被聘用在一个拥有大型 'ol linux 集群的实验室工作。我是一个 mac/windows 人,所以我仍在尝试弄清楚如何使用 'nix 命令行导航。到目前为止,我还没有遇到任何实际问题,但是我遇到了大约 5000 种与学习新系统相关的令人讨厌的小事情。
迄今为止最大的烦恼是:无论出于何种原因(安全性,关于这些服务器如何设置但我还不太了解,等等),当通过 SSH 从校外登录集群时,您首先需要SSH 连接到实验室桌子上的旧 imac,然后从那里 SSH 连接到集群。我一直在使用 SCP 命令将文件从我的家用 mac 复制到集群:
首先在一个终端窗口中:
my-home-mac:scp file userA@XXX.XXX.XXX.XXX:~/target
Run Code Online (Sandbox Code Playgroud)
然后在另一个终端窗口(我登录到实验室 imac):
lab-imac:scp file userB@YYY.YYY.YYY.YYY:~/target
Run Code Online (Sandbox Code Playgroud)
问题是,每次我这样做时,我都被迫首先将文件 SCP 到实验室 imac(并输入一个密码),然后将文件从那里 SCP 到集群(并输入另一个密码)。我正在尝试帮助开发这个分成 4 打文件的 C 程序,所以我移动了很多文件,这让我发疯。
我想我将不得不学习 shell 脚本,但与此同时,为了启动和运行,我有几个问题:
如何在我的家用 mac 上设置终端,以便我不必总是输入实验室 imac 或集群的密码?
有什么方法可以将 SCP(或其他一些命令)文件直接从我的家用 mac 传输到集群,而无需经过中间环节?
有没有办法在我的家用 mac 上设置 Fugu(或任何其他带有 gui 的 SSH 客户端,就此而言),以便它可以考虑中间服务器(实验室 imac)并表现得像将我直接连接到簇?
我是一名物理学家,实验室里的其他人都是生物学家,设置所有这些东西的人早已不复存在,所以我要联系你们,在很棒的堆栈溢出社区中的所有人,帮我一把。谢谢。
您可以设置密钥以避免输入密码。我确定之前已经在这里讨论过(请参阅如何从远程机器使用 SSH 公钥?提示ssh-keygen
),并且我总是使用 OpenSSH 命令行客户端(在我的 mac 上使用fink安装,使用本地包管理器)在 linux 上),所以我不会解决愚蠢的准图形客户端。
ssh
或scp
通过网关的配方您需要在原始机器上使用两个命令行(我将其称为 orig)。网关称为gate,目的地称为dest。
第一个命令行:
orig$ ssh -L 1111:dest.tld:22 gate.tld
Run Code Online (Sandbox Code Playgroud)
这通过 ssh 隧道通过gate 将在orig 上传出的端口 1111 链接到在dest上传入的端口 22 。
现在,如果您暂时需要此转发,请将其设置为执行一些不会让会话超时的操作。我用top
.
第二个命令行:
orig$ ssh -p 1111 username_on_dest@localhost
Run Code Online (Sandbox Code Playgroud)
或者
orig$ scp -P 1111 path/to/file/on/orig/filename username_on_dest@localhost:path/on/dest/new_filename
Run Code Online (Sandbox Code Playgroud)
(请注意,端口指定选项对ssh
和scp
...arghhh 使用不同的大小写!)阅读文档以了解您可以解决此问题的各种方法,但这是基本方案。如果您定期使用出于安全原因而远离公共网络的资源,则非常有用。