linux - 找不到 ssh 环境变量 bash 命令

标签 linux variables ssh

我尝试从 ssh 非交互式 ssh 连接启动一些命令。为此,我使用 ant-sshexec 连接。

为了设置一切,我使用了这篇文章: http://www.raphink.info/2008/09/forcing-environment-in-ssh.html

我使用 ~/.ssh/environment。 为此,我在 sshd_config 中将 PermitUserEnvironment 设置为“yes”并重新启动了 sshd。

在我的 .ssh/environment 中我有这个内容:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/ubuntu/java/jdk1.6.0_27/bin

JAVA_HOME=/home/ubuntu/java/jdk1.6.0_27

#PATH=/home/ubuntu/java/jdk1.6.0_27/bin:$PATH

#PLAY_HOME=/home/ubuntu/play

尝试使用非交互式连接时出现错误:

 [sshexec] Could not execute the java executable, please make sure the JAVA_HOME environment variable is set properly (the java executable should reside at JAVA_HOME/bin/java). 

但是我在路径中添加了 java..

最佳答案

sshd(8) 的手册页是关于 ~/.ssh/environment 的:

    It can only contain empty lines, comment lines (that start with
    ‘#’), and assignment lines of the form name=value.

也就是说,它根本不是一个shell脚本。您有双引号、变量扩展和别名定义。这些都行不通。试试这个:

PATH=/home/ubuntu/java/jdk1.6.0_27/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
JAVA_HOME=/home/ubuntu/java/jdk1.6.0_27
PLAY_HOME=/home/ubuntu/play

还要确保 ~/.ssh/environment 的权限如手册页中所述 - 没有组或文件的其他写入权限。

如果您担心在损坏的环境中将自己锁定在帐户之外,请先登录主机并运行如下测试命令进行测试:

ssh localhost 'echo $JAVA_HOME'

您可以确保环境变量的设置符合您的预期,如果出现问题,您仍然可以登录到主机,从而可以撤消更改。

关于linux - 找不到 ssh 环境变量 bash 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8077259/

相关文章:

c - 使用 Makefile 重新定义问题

c++ - 在 C++ 中,如何迭代地访问几个名称仅因数字不同而不同的变量?

eclipse - 不工作 - 将鼠标悬停在变量上以在 Eclipse 的调试透视图中查看值

java - 即使服务器的主机 key 存在于known_hosts 文件中,JSch 连接也会失败并显示 UnknownHostKey

python - 如何接受多个元素的列表作为命令行参数?

python - 由于 pip3.2 错误,软件包安装失败

linux - 在 linux 文件中的每一行之前添加文本

css - 如何在CSS中添加变量和做循环

shell - 通过脚本设置时passwd错误

python - 使用 os.forkpty() 创建一个伪终端以通过 ssh 连接到远程服务器并与之通信