`
猫太的鱼
  • 浏览: 233059 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

让SSH Server使用自定义环境变量

 
阅读更多
对于在Linux下工作的人来说, 经常需要使用ssh. 在使用控制台登录到远程机器上以后再执行操作的情况下,不存在使用环境变量的问题. 但是,对于不需要登录而直接用ssh在远程机器上执行命令的而言, 环境变量的使用就是一个问题了. 因为,远程机器的ssh server使用的是默认的环境变量,尤其是PATH. 比如我在当前机器abcn5上,执行echo $PATH,显示的是: "/opt/java/bin:/opt/intel/cce/10.1.015/bin:/usr/local/bin:/usr/bin:/bin:", 但是,我在其他机器上执行 ssh abcn5 'echo $PATH',显示的却是: "/usr/local/bin:/usr/bin:/bin".

对于需要自动化测试的人来说, 经常需要使用一台机器控制代码分布到各个远程机器上,并且在远程机器上执行测试. 既然是自动化,整个过程不需要人工的干预,即不需要使用控制台登录到远程机器. 这种情况, 工作都是通过使用ssh在远程机器上执行命令来完成的. 而经常, 所使用到的程序不在默认的PATH中, 许多需要的环境变量默认也不存在. 这种情况下, 就需要让ssh server能够接受自定义的环境变量(包括PATH).

要让SSH server接受自定义的环境变量,有以下3种方式,这三种方式都需要有一定的权限,比如对sshd_config的修改权限,ssh_config的修改权限,ssh server的安装权限等等,最好是具有sudo的权限. 对于产品内部测试而言, 一般测试人员都对使用的测试机器具有管理的权限,所以,这应该不是一个问题.

1 远程机器编译期设定,此点仅对PATH有效.
Open ssh的configure中有一个选项:  --with-default-path=, 这个就是用来设定ssh server的默认PATH的

2 远程机器上设定.
修改远程机器上的sshd_config,使得其具有以下行:
PermitUserEnvironment yes
而后,在远程机器~/.ssh/建立environment文件,并且使用name=value的形式,增加需要自定义的环境变量,ssh在远程机器上执行命令时,environment中设定的变量都是执行环境的一部分

3 本机设定发送给远程机器.
修改远程机器上的sshd_config,使得其具有以下行:
AcceptEnv .....
AcceptEnv 后面接可以自定义的环境变量的名称,多个间空格隔开,可以使用通配符,比如
AcceptEnv PATH USER APPNAME TCL* A?
修改本机的ssh_config使得具有以下行:
SendEnv .....
格式同上.
这种情况下,ssh将会将SendEnv指定的环境变量发送给远程机器,远程机器根据AcceptEnv中的定义, 接受符合的,用这些符合的代替以后的环境变量,成为执行环境的一部分.
分享到:
评论

相关推荐

    docker-sshd:最小的Alpine Linux Docker映像,已公开sshd并且已安装rsync

    环境选项使用以下环境变量配置容器,或选择在/etc/ssh/sshd_config挂载自定义sshd配置:常规选项SSH_USERS要创建的用户帐户和uid / SSH_USERS列表。 例如SSH_USERS=www:48:48,admin:1000:1000:/bin/bash 。 用于指定...

    安装 SUSE Linux Enterprise Server --服务器版

    • PATH:环境变量 PATH • ls,--help:命令、选项和参数 • user:用户或组 • Alt , Alt + F1 :按键或组合键;这些键以大写形式显示,如在键盘上一样。 • 文件,文件→ 另存为:菜单项、按钮 • ►amd64 em64t...

    integration-simulators-nf-simulator-netconf-server:Integrationsimulatorsnf-simulatornetconf-server存储库的镜像

    Netconf服务器 该服务器使用sysrepo模拟网络配置。 它是od sysrepo-netopeer2映像的基础。 用户指南 启动服务器 为了启动服务器,请使用位于根目录中的... TLS是默认禁用的,要启用它,请设置环境变量ENABLE_TLS=tr

    bare-metal-bosh-lite:Bosh-lite在裸机上

    入门-快速方法安装先决条件: ./install-prereqs 导出所需的环境变量: export SERVER_IP=<ip>export SSH_KEY=<path> 确保您可以与流浪汉与服务器通信: vagrant up 准备盒子: vagrant provision 如果一切顺利,您...

    【最新版】navicat150_premium_en.dmg navicat-premium: 15.0.14【亲测可用】最好的MySQL数据库开发工具

    Navicat Premium是一个数据库开发工具,可让您从单个应用程序同时连接到MySQL,MariaDB,MongoDB,SQL Server,Oracle,PostgreSQL和SQLite数据库。与Amazon RDS,Amazon Aurora,Amazon Redshift,Microsoft Azure...

    Navicat Premium12

    透过关键字建议和减少重复输入相同的代码,自动完成代码和自定义的代码段功能可让编码更加快速。我们的调试组件能快速寻找和更正 PL/SQL 和 PL/PGSQL 编码时的错误,你可设置断点,逐步运行程序,查看和修改变量值,...

    python入门到高级全栈工程师培训 第3期 附课件代码

    05 Python安装以及环境变量的操作 06 Python初识以及变量 07 Python条件语句和基本数据类型 08 Python while循环语句以及练习题 09 练习题讲解 第10章 01 上节内容回顾以及补充 02 上周作业实现 03 Pycharm的安装...

    老男孩python 四期

    4、Socket Server的开发与使用 5、多线程非阻塞并发自处理 6、练习程序:用SOCKET模拟实现SSH客户端功能 6、项目实战二、开发FTP服务器\客户端软件 ※分别开发服务器端和客户端,通过Socket模块实现网络通信,模拟...

Global site tag (gtag.js) - Google Analytics