我已经进行了设置,以便可以从笔记本电脑安全地通过 SSH 连接到我的家用 PC。今天,我尝试运行更新只是为了测试,但我无法通过笔记本电脑进行更新。
我基本上想要做的是将命令传递给机器而不用 SSH-ing 进入它,同时不保持连接处于活动状态。我试着在网上四处寻找,看看是否能找到一些东西,但似乎没有任何效果。
这些是我尝试过的命令:
$ ssh myip 'sysupg &'
bash: sysupg: command not found
echo "mypassword" | ssh myip 'sudo -S dnf upgrade -y &'
[sudo] password for myuser:
sudo: no password was provided
sudo: a password is required
echo "mypassword" | ssh myip 'sudo -S -k dnf upgrade -y &'
[sudo] password for myuser:
sudo: no password was provided
sudo: a password is required
当它询问我的密码 ( [sudo] password for myuser:
) 时,它不允许我输入任何内容,只是继续,给我最后两个sudo
错误。
tldr:将需要sudo
通过的命令传递ssh
到另一台机器,一旦命令传递,“自动”关闭连接,如果可能,在 x 分钟内执行命令。
可能的方式:
1>
和2>
重定向sudo -b
选项ssh
提供交互性sudo
;使用ssh -t
选项其他可能但不推荐的方式:
sudo
在标准输入上读取密码;使用sudo -S
选项而不是ssh -t
您错过了该
sudo -b
选项,因为&
密码提示在后台运行,而不是您唯一想要的任务。此外,丢失
1>
或2>
重定向会保留 ssh 连接。但是,只要您使用
PubkeyAuthentication
,一个安全的方法是:PermitRootLogin prohibit-password
在sshd_conf
/root/.ssh/authorized_keys
ssh-agent
但是,最好的方法是
screen
在服务器端使用:稍后,重新附加会话: