一个线性问题:在通过bastion主机通过SSH登录后,如何在远程主机上自动获取远程文件?
在ssh-ing之后,我需要在远程主机上找到一个包含别名+ shell用户定义函数列表的文件。
该文件存在于/tmp文件夹(例如/tmp/my-rc )中的远程加工中。
搜索我找到的其他帖子和互联网
ssh -t user@domain.com 'source /tmp/my-rc; bash -l'
问题是我确实得到了一个终端,但是没有设置任何别名,因为它是一个新的bash‘
考虑到源代码应该是在附加shell之后完成的,尝试了下面的操作,但这也不起作用。没有错误,我得到了终端,但不认为文件是来源的(通过回显/tmp/my-rc文件中的虚拟消息来验证)
ssh -t user@domain.com 'bash -l; source /tmp/my-rc'
甚至试着用“。”而不是来源,没有运气。
任何帮助。
Note1: Bash或ZSH任何外壳解决方案都可以。
Note2:实际的ssh是通过一个代理命令,即跳过堡垒主机(只是提到如果它是相关的)
Note3:我在远程主机上没有配置文件rc或bashrc的特权,甚至没有主目录的特权。
Note4:我登录到安全主机的确切命令是通过bastion主机登录的,如下所示
ssh -o ProxyCommand='ssh -W %h:%p ec2-3-218-12-120.compute-1.amazonaws.com' 10.0.31.122
发布于 2020-09-04 12:40:46
如果在远程主机的UsePAM文件中将sshd_config设置为yes,那么配置文件/etc/pan.d/sshd允许您在成功登录时自动执行命令,以及身份验证过程中的其他事件。添加这一行代码
session required pam_exec.so /etc/myscripts/./sourcing-script
在这些线的正上方
# SELinux needs to intervene at login time to ensure that the process starts
# in the proper default security context. Only sessions which are intended
# to run in the user's context should be run after this.
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
其中/etc/myscript/sourcing script只是远程主机上的一个文件,命令在成功登录时执行。
#!/bin/bash
source /tmp/my-rc
#echo $(date) >> /etc/myscripts/sourcing-script.log
#cat /tmp/my-rc >> /etc/myscripts/sourcing-script.log
在打开ssh会话之前,我使用此方法停止服务并将其报告给日志文件。在注销之前,我设置了一个crontab来启动服务,这样它就不会与我的ssh会话并行运行。
发布于 2020-08-16 06:40:28
通常在$HOME/.profile
或变体中这样做。
ssh
设置以SSH_
开头的环境变量,您可以使用这些变量来确定您是通过ssh
登录,还是直接登录。
https://unix.stackexchange.com/questions/604693
复制相似问题