SSH 无法发送命令

SSH 无法发送命令

描述

我第一次遇到这个问题是在我尝试通过 LAN 使用 SCP 连接到另一台计算机时, zsh:1: command not found: scp
在有人问之前就得到了以下信息:是的,我已经安装了 SSH
我可以使用 ssh 顺利登录到另一台计算机。
问题是 SCP,ssh [user@]hostname [command]两者都导致zsh:1: command not found: [command]

测试

我尝试使用 SCP 和 localhost

systemctl start sshd.service
scp /home/user/asdf.log [email protected]:/home/user/test/asdf.log
...
zsh:1: command not found: scp

然后发送命令:

ssh [email protected] ls
...
zsh:1: command not found: ls

ssh [email protected]按预期工作。

我使用了-vswitch,信息看起来很正常。
我尝试切换到 Bash 而不是 ZSH;同样的错误。

最后我尝试了 root 登录,成功了

ssh [email protected] ls
...
Desktop
Documents
Music
...

SSH 配置:

~/.ssh/config: 没有什么

#/etc/ssh/sshd_config
PermitRootLogin yes # this is bad; for testing only
AuthorizedKeysFile  .ssh/authorized_keys
ChallengeResponseAuthentication no
UsePAM yes
PrintMotd no #pam does that
Subsystem sftp /usr/lib/ssh/sftp-server

使用带有 openssh 7.9p1 的 Arch Linux

总结

看起来 SCP 和单命令 SSH 的环境尚未设置(甚至 PATH 也未设置)。但是,对于 root 登录,环境已正确设置。
对此有什么想法吗?

更新

这是我的用户 shell 配置的问题。
我添加了一个新的空白用户帐户,然后使用 SCP 进入该帐户,一切正常。

答案1

我解决了这个问题。

我的路径设置中有一行~/.pam_environment
PATH DEFAULT=${PATH}:/home/@{PAM_USER}/bin
不知为何,这行代码将 /home/user/bin 放入我的路径中 3 次,并添加了一个额外的冒号。
我不知道为什么会这样。
但改为设置我的 PATH~/.profile即可解决问题。

我猜想,错误的 PATH 分配已被 ssh 丢弃,但没有被我的常规登录丢弃。

相关内容