繁体   English   中英

在Linux上,如何仅通过会话通过SSH连接共享脚本?

[英]On Linux, how can I share scripts across an SSH connection for the session only?

为了工作,我必须通过SSH连接到数十台Linux机器(以执行维护,监视系统,安装软件等)。

我有一小部分脚本可以帮助我完成其中一些任务,这些脚本位于Mac上/ Users / me / bin中的文件夹中。 我希望能够在远程Linux机器上运行这些脚本,但是由于多种原因,我不希望这些脚本永久位于这些机器上(例如,其他人也连接到这些远程机器,因此让它们使用是不明智的)执行这些文件)。

因此,是否可以仅在会话的生存期内通过SSH连接共享脚本?

关于如何执行此操作,我有两个想法,但我不知道它们是否会起作用。 首先,如果SSH允许文件挂载,当我连接到远程Linux机器时,我可以自动将me @ mymac:/ Users / me / bin挂载到me @ linux:/ remote_bin并将PATH变量设置为“ $ PATH:/ remote_bin” ”。 其次,我可以在连接字符串中设置端口转发(例如ssh me@linux -R 9999:127.0.0.1:<SMBPORT|ETC> ,每次连接时都要挂载共享并设置$ PATH变量。

编辑 :我想出了一个半解决方案。 在Linux机器上,编辑/etc/ssh/sshd_config以添加以下子系统: Subsystem shareduserbinary sudo su -l -c "/bin/mount -t cifs -o port=9999,username=me,nounix,sec=ntlmssp //127.0.0.1/exported_bin /mnt/remote_bin" && bash -l -i -s 连接到远程计算机时,设置反向端口正向并调用子系统。 例如: ssh -R 9999:127.0.0.1:445 -s shareduserbinary me@linux

编辑2 :通过从sudo命令中删除-l并将路径从/mnt/remote_bin$HOME/rbin ,可以使上面的解决方案更加$HOME/rbin

有趣的问题。 也许可以在〜/ .bash_login中添加命令(假设您正在使用bash),以在登录时从远程主机(例如mac)复制脚本,然后在〜/ .bash_logout中添加命令以在删除脚本时删除脚本。您注销。 但是,正如bmargulies指出的那样,最好进一步并确保没有其他人有权读取或执行脚本。

您可以在启动SSH会话时使用OpenSSHLocalCommand上载文件(例如使用scprsync )(请参见man ssh_configthis ):

Host server1 server2 [...]
PermitLocalCommand yes
LocalCommand scp -q /Users/bin/me/* %h:temp_bin/

并使用.bash_logout或在.bashrc指定的EXIT trap删除注销时目录的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM