usual2970/certimate

[SSH] 请支持SSH跳板用户

Closed this issue · 4 comments

wsy commented

功能描述
使用跳板用户(比如user)将证书文件传输到中间文件夹(因为目标文件夹只有root可以写入),
再用跳板用户建立ssh连接,并使用su命令切换到root用户。
最后使用root权限把相关文件移到目标文件夹中。

动机
由于安全设置,我的Ubuntu机器,不支持直接使用root用户登录(有相应安全设置),需要使用我自己的用户(例ubuntu)登录上去,再用sudo su - root命令切换到root用户。

其他信息
我以前传文件,都是这样操作的:

  1. 把文件传到ubuntu机器上

scp example.com.cer ubuntu@ubuntu.example.com:~/
scp example.com.key ubuntu@ubuntu.example.com:~/

  1. 使用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只是方便用户填写提供的默认值

wsy commented

感谢反馈~可能没明白你的意思

现在是支持除了 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的用户

image

用当前的能力应该是可以实现的吧:

假设:

有两个用户:wsy,root

目标文件夹:/wsy/ssl,/root/ssl

  1. 上传证书到/wsy/ssl
  2. 执行命令 sudo -S -u root bash -c 'cp /wsy/ssl/cert.crt /root/ssl/cert.crt && service nginx reload'
wsy commented

确实,思维局限在了su上面了,忘记sudo了