我经常需要通过 scp 部署东西。问题是远程机器上的用户(例如 tomcat)与我登录的用户(例如 mylogin)不匹配。而且我几乎总是无法直接使用远程用户登录(已从管理员禁用)
假设以下情况:我想将文件部署到 tomcats 的 webapps 文件夹中,但之前只能通过远程机器上的“sudo -U tomcat”来执行此操作。
目前我正在做这样的事情:
scp file.war [email protected]:/home/mylogin/tmp/
ssh [email protected] 'sudo -U tomcat cp /home/mylogin/tmp/file.war /tomcat/webapps/'
有没有更好的不使用临时文件夹的解决方案?我的意思是,只用 sudo “中间” 进行一次复制是否可行?可以使用端口转发来完成吗?
这个问题与这
答案1
让您的管理员为仅 SFTP 访问(这会不是通过“推送新配置”启用 SSH,无论这意味着什么),并为您安装密钥,将密钥安装到与 tomcat 位于同一 Unix 组中的用户,并创建 tomcat 用户的目录g+w
。然后,您可以执行以下操作
$ scp myfile upload@remotehost:~tomcat/
这就是 Unix 群组系统为了,在 Red Hat 的那些笨蛋因为某些未知原因决定每个用户都应该拥有自己的组之前,每个人都是这么做的。
答案2
将您的公钥添加到 tomcat 用户的 authorized_keys 文件中。这将允许您以 tomcat 身份进行 ssh:
scp file.war [email protected]:/tomcat/webapps/