[SSH] 请支持SSH跳板用户
Closed this issue · 4 comments
功能描述
使用跳板用户(比如user
)将证书文件传输到中间文件夹(因为目标文件夹只有root可以写入),
再用跳板用户建立ssh连接,并使用su
命令切换到root
用户。
最后使用root权限把相关文件移到目标文件夹中。
动机
由于安全设置,我的Ubuntu机器,不支持直接使用root用户登录(有相应安全设置),需要使用我自己的用户(例ubuntu
)登录上去,再用sudo su - root
命令切换到root
用户。
其他信息
我以前传文件,都是这样操作的:
- 把文件传到ubuntu机器上
scp example.com.cer ubuntu@ubuntu.example.com:~/
scp example.com.key ubuntu@ubuntu.example.com:~/
- 使用root用户将文件移到相关文件夹并设置权限
ssh ubuntu@ubuntu.example.com
sudo su - root
mv /home/ubuntu/example.com.cer /etc/nginx/certs/
mv /home/ubuntu/example.com.key /etc/nginx/certs/
chown root:root /etc/nginx/certs/example.com.cer
chown root:root /etc/nginx/certs/example.com.key
感谢反馈~可能没明白你的意思
现在是支持除了 root 外的其它用户的,root只是方便用户填写提供的默认值
感谢反馈~可能没明白你的意思
现在是支持除了 root 外的其它用户的,root只是方便用户填写提供的默认值
举例子:
证书目标路径:/etc/nginx/certs/example.com.crt 和 /etc/nginx/certs/example.com.key (root用户可写,其它用户不可写)
目标机器Ubuntu,由于安全限制,root用户不允许远程登陆。只能使用其它用户从远程登录。(此处假定用户名为ubuntu)
操作步骤:
1. 使用scp命令,用ubuntu用户,把文件传到机器上。由于/etc/nginx/certs/只有root可以写入,所以证书要传到临时位置。(此处假定是/home/ubuntu/example.com.crt和/home/ubuntu/example.com.key)
2. 使用ssh用户登录上去,由于root不能远程登陆,所以使用ubuntu用户登上去。登上去之后,再用`sudo su - root`命令切换到root用户。才能以root身份,把证书移到/etc/nginx/certs/文件夹下。
这里涉及两个用户:root和一个能sudo的用户
用当前的能力应该是可以实现的吧:
假设:
有两个用户:wsy,root
目标文件夹:/wsy/ssl,/root/ssl
- 上传证书到/wsy/ssl
- 执行命令 sudo -S -u root bash -c 'cp /wsy/ssl/cert.crt /root/ssl/cert.crt && service nginx reload'
确实,思维局限在了su上面了,忘记sudo了