![SSH 执行命令的方式不同](https://linux22.com/image/1137437/SSH%20%E6%89%A7%E8%A1%8C%E5%91%BD%E4%BB%A4%E7%9A%84%E6%96%B9%E5%BC%8F%E4%B8%8D%E5%90%8C.png)
经过几次实验,我发现 SSH 的行为令人惊讶。我通常通过 SSH 连接访问特定应用程序。事实上,该应用程序位于实验室工作站上的虚拟盒上。我使用笔记本电脑通过 ssh 连接到应用程序。提供 ubuntu 作为客户操作系统的虚拟盒与工作站(也是 ubuntu)之间的连接由桥接定义。我连接到工作站和应用程序的另一种方法是通过 Teamviewer。无论如何,事实是,当我通过 TeamViewer(远程桌面)运行特定命令(即执行 make 文件)时,一切都很好,该命令成功返回,这相当于有人在本地运行应用程序的情况。但是当我通过 SSH 访问应用程序时,“make 命令”以几个错误结束。奇怪的是,当通过不同的方法执行相同的命令时,它会产生不同的结果!
你能帮我解决这个问题吗?我更喜欢通过 ssh 而不是 teamviewer 使用 shell,因为带宽使用率高,传递命令有延迟。为了向您提供更多详细信息,两个环境(SSH 和 Teamviewer)中的“env”命令输出如下:
LC_PAPER=it_IT.UTF-8
XDG_SESSION_ID=7
LC_ADDRESS=it_IT.UTF-8
LC_MONETARY=it_IT.UTF-8
TERM=xterm-256color
SHELL=/bin/bash
ALTERAOCLSDKROOT=/home/legup/altera/15.0/hld
SSH_CLIENT=10.48.44.137 35604 22
LC_NUMERIC=it_IT.UTF-8
QSYS_ROOTDIR=/home/legup/altera/15.0/quartus/sopc_builder/bin
SSH_TTY=/dev/pts/10
USER=legup
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:
LC_TELEPHONE=it_IT.UTF-8
QUARTUS_ROOTDIR=/home/legup/altera/15.0/quartus/
MAIL=/var/mail/legup
PATH=/home/legup/legup-4.0/gui/scheduleviewer:/home/legup/clang+llvm-3.5.0-x86_64-linux-gnu/bin:/home/legup/altera/15.0/modelsim_ase/bin:/home/legup/altera/15.0/quartus/sopc_builder/bin:/home/legup/altera/15.0/quartus/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
QT_QPA_PLATFORMTHEME=appmenu-qt5
LC_IDENTIFICATION=it_IT.UTF-8
PWD=/home/legup/legup-4.0
LANG=en_CA.UTF-8
LC_MEASUREMENT=it_IT.UTF-8
LEGUP_EXAMPLES=/home/legup/legup-4.0/examples
QUARTUS_64BIT=1
SHLVL=1
HOME=/home/legup
LANGUAGE=en_CA:en
LOGNAME=legup
SSH_CONNECTION=10.48.44.137 35604 10.79.4.173 22
LESSOPEN=| /usr/bin/lesspipe %s
XDG_RUNTIME_DIR=/run/user/1000
LESSCLOSE=/usr/bin/lesspipe %s %s
LC_TIME=it_IT.UTF-8
LC_NAME=it_IT.UTF-8
_=/usr/bin/env
OLDPWD=/home/legup
XDG_VTNR=7
XDG_SESSION_ID=c1
CLUTTER_IM_MODULE=xim
SELINUX_INIT=YES
XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/legup
SESSION=ubuntu
GPG_AGENT_INFO=/run/user/1000/keyring-A53H7K/gpg:0:1
TERM=xterm
SHELL=/bin/bash
XDG_MENU_PREFIX=gnome-
VTE_VERSION=3409
ALTERAOCLSDKROOT=/home/legup/altera/15.0/hld
WINDOWID=69206027
OLDPWD=/home/legup/legup-4.0/examples
UPSTART_SESSION=unix:abstract=/com/ubuntu/upstart-session/1000/1362
QSYS_ROOTDIR=/home/legup/altera/15.0/quartus/sopc_builder/bin
GNOME_KEYRING_CONTROL=/run/user/1000/keyring-A53H7K
GTK_MODULES=overlay-scrollbar:unity-gtk-module
USER=legup
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
SSH_AUTH_SOCK=/run/user/1000/keyring-A53H7K/ssh
DEFAULTS_PATH=/usr/share/gconf/ubuntu.default.path
SESSION_MANAGER=local/legup-vm:@/tmp/.ICE-unix/1665,unix/legup-vm:/tmp/.ICE-unix/1665
XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/usr/share/upstart/xdg:/etc/xdg
QUARTUS_ROOTDIR=/home/legup/altera/15.0/quartus/
PATH=/home/legup/legup-4.0/gui/scheduleviewer:/home/legup/clang+llvm-3.5.0-x86_64-linux-gnu/bin:/home/legup/altera/15.0/modelsim_ase/bin:/home/legup/altera/15.0/quartus/sopc_builder/bin:/home/legup/altera/15.0/quartus/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
DESKTOP_SESSION=ubuntu
QT_IM_MODULE=ibus
QT_QPA_PLATFORMTHEME=appmenu-qt5
JOB=dbus
PWD=/home/legup/legup-4.0/examples/matrixmultiply
XMODIFIERS=@im=ibus
GNOME_KEYRING_PID=1605
LANG=en_CA.UTF-8
GDM_LANG=en_CA
MANDATORY_PATH=/usr/share/gconf/ubuntu.mandatory.path
LEGUP_EXAMPLES=/home/legup/legup-4.0/examples
QUARTUS_64BIT=1
IM_CONFIG_PHASE=1
COMPIZ_CONFIG_PROFILE=ubuntu
GDMSESSION=ubuntu
SESSIONTYPE=gnome-session
XDG_SEAT=seat0
HOME=/home/legup
SHLVL=1
LANGUAGE=en_CA:en
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
LOGNAME=legup
COMPIZ_BIN_PATH=/usr/bin/
XDG_DATA_DIRS=/usr/share/ubuntu:/usr/share/gnome:/usr/local/share/:/usr/share/
QT4_IM_MODULE=xim
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-fzhVmN3W5R
LESSOPEN=| /usr/bin/lesspipe %s
INSTANCE=
TEXTDOMAIN=im-config
XDG_RUNTIME_DIR=/run/user/1000
DISPLAY=:0
XDG_CURRENT_DESKTOP=Unity
GTK_IM_MODULE=ibus
LESSCLOSE=/usr/bin/lesspipe %s %s
TEXTDOMAINDIR=/usr/share/locale/
COLORTERM=gnome-terminal
XAUTHORITY=/home/legup/.Xauthority
_=/usr/bin/env
答案1
在您的命令的记录输出中make
,您应该注意到重要的部分:
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "en_CA:en",
LC_ALL = (unset),
LC_PAPER = "it_IT.UTF-8",
LC_ADDRESS = "it_IT.UTF-8",
LC_MONETARY = "it_IT.UTF-8",
LC_NUMERIC = "it_IT.UTF-8",
LC_TELEPHONE = "it_IT.UTF-8",
LC_IDENTIFICATION = "it_IT.UTF-8",
LC_MEASUREMENT = "it_IT.UTF-8",
LC_TIME = "it_IT.UTF-8",
LC_NAME = "it_IT.UTF-8",
LANG = "en_CA.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
这就是本地登录和远程登录的区别,因为默认安装时ssh
会传递LC_*
环境变量。显示您所在地区的环境听起来是个好主意,但通常不起作用,而且会造成更多麻烦。
有几种方法可以解决这个问题。我最喜欢的是修改本地 ssh 客户端配置/etc/ssh/ssh_config
并注释掉该行并重新连接:
# SendEnv LANG LC_*
您也可以在的服务器端执行相同的操作sshd
,但文件/etc/ssh/sshd_config
和选项被称为AcceptEnv
(值相同)。
还应该可以将意大利语(或者en_CA
可能是问题所在?)语言环境安装到您的服务器上,但我没有看到这里的好处。
无论如何,根本原因可能是工具本身,因为它看起来正在尝试解析某些 perl 脚本的输出但不能正确处理这些错误。