我尝试从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添加到路径中..
答案 0 :(得分:2)
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'
您可以确保按照您的预期设置环境变量,如果出现问题,您仍然会登录到主机,从而允许您撤消更改。
答案 1 :(得分:1)
您为路径使用了多个环境变量。但是不要从我看到的命令中导出。
你应该这样做。
export PATH="A"
export PATH="$PATH:B"
export PATH="$PATH:C"
此外,您可以从那里获得此类帮助。 所以请把它发布到unix。
希望它有所帮助。