如何在没有密码的情况下使用 ssh 在远程主机上启用使用命令?

如何在没有密码的情况下使用 ssh 在远程主机上启用使用命令?

我设置为在两台主机之间使用 ssh,无需密码。

ssh 登录工作正常,但执行命令失败,出现以下错误:

**isn't allowed to be executed with process or redirect controls.**

使用的简单命令:

ssh remo-tehost " echo \"\test\"  >> \"/home/alarmstest.log\" "

我得到的运行跟踪:

debug1: Sending command:  echo "test"  >> "/home/alarmstest.log" 
debug2: channel 0: request exec confirm 1
debug2: fd 3 setting TCP_NODELAY
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug2: channel 0: rcvd adjust 2097152
debug2: channel_input_status_confirm: type 99 id 0
debug2: exec request accepted on channel 0
debug2: channel 0: rcvd ext data 117

远程服务器上有 sudosh 用户使用的 user:x:500:500::/home/user:/usr/local/bin/sudoshauthorized_keys 来自远程服务器 + key inside -rw-------- 1 个用户 user 9092 12 月 13 日 07:53authorized_keys

答案1

这似乎是引用的问题。只需记住,每当您想通过 ssh 执行 shell 命令时,远程 shell(例如 Bash)都会将其接收为/bin/bash -c <command-line>.您只需要一对引号:

ssh remo-tehost "echo test  >> /home/alarmstest.log"

这一对对于防止本地 shell(即用于执行命令行的 shell)解释参数非常重要。

答案2

由于主目录权限问题:

远程主机上的 ~home 目录、~/.ssh 目录和 ~/.ssh/authorized_keys 文件必须只能由使用 700 或 755 的用户写入,775 将不起作用。

私钥文件(在本地主机上)只能由使用的用户读写:rw——-, 600。

相关内容