我设置为在两台主机之间使用 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。