`

使用 ruby net/ssh connection openssh 的两个问题

阅读更多

使用 ruby net/ssh connection openssh 的两个问题

 Large | Medium | Small  
18:27 , vkill
环境:ruby 1.8.7、net/ssh 2.0.22、openssh 5.4、archlinux 2.6.32 
问题1:PATH的问题,导致我们无法执行一些命令
现象:
我们net/ssh connection openssh后 exec!('echo $PATH') 返回的是 /usr/bin:/bin:/usr/sbin:/sbin
原因:
net/ssh 是 "user@notty" ,而 xshell这些 是 "user@pts/x"
这点我们可以通过 'ps aux|grep sshd' 来实时查看
查看后发现 xshell 认证后是 sshd: root@pts/0 ,而net/ssh 认证后是 sshd: [accepted]
[2010.6.4 19:00更新] 我把net/ssh用到rails中的时候,rails启动后是 sshd: root@notty,这个还真没想到能看到
引用一段说明
Quotation

//原文参见 http://www.iteye.com/topic/402750
Ruby ssh only provide the "SSH" function, not term login. 
If you check, you will see that the connection from ruby ssh is "user@notty", not like ssh command ("user@pts/x"). 
You have to do more to make an environment like manual login.

解决方法:

[root@vkill ~]# vi /etc/ssh/sshd_config
//添加这行
PermitUserEnvironment yes
[root@vkill ~]# vi ~/.ssh/environment
//添加类似这行,文件内容格式参见 /etc/environment
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/opt/ruby-enterprise-1.8.7-2010.01/bin:/usr/local/bin:/usr/local/sbin
[root@vkill ~]# /etc/rc.d/sshd restart

结果:
现在再去 net/ssh 后看 $PATH 就是~/.ssh/environment中设置的了

问题2:工作目录的问题
现象:
shell下先后执行 'cd /var' 和 'pwd' 命令,当前工作目录就是 /var 了,而 net/ssh 则还是 ~
解决方法:
两个命令一起执行,即net/ssh connection openssh后 exec!('cd /var ;pwd') 则显示 /var 
Last modified by vkill on2010/06/04 19:01
类别:ruby & rails | Tags: 原创 , 学习笔记 , net/ssh , ssh , 协议 | 1 条评论, 889 次阅读
网友评论(1):
CharlesCui
2010/06/12 11:05
这个问题我整好今天也碰到了,也是采用cd命令和其它命令写在一起,然后让Net::SSH的exec!函数一起调用.但还有一个问题没有解决就是:当Net::SSH访问rpc.rstatd这个命令的时候Ruby会被阻塞住,远程主机也没有执行rpc.rstatd命令,sess.exec!("rpc.rstatd")我还没有搞明白什么原因导致,估计是rpc.rstatd命令自身问题.
vkill replied on 2010/06/13 23:17
你好,我用 archlinux 的,还没用过 rpc.rstatd ,你用本地执行下 rpc.rstatd 看看是不是要需要输入啥,我试 'passwd user' 的时候也一直组塞住,后来发现输入不是在 stdout 中,而是在 stderr 中,具体啥情况看看这篇 http://blog.vkill.net/read.php/157.htm

分享到:
评论

相关推荐

    基于麒麟V10SP1制作的最新版openssh ARM版 openssh-9.5p1-1 所有RPM文件

    如果是升级麒麟V10sp1服务器的openssh,只需要其中的三个文件即可 tar -xf openssh-9.5p1-1.tgz cd aarch64/ rm -rf openssh-askpass* rm -rf openssh-debug* rpm -Uvh *.rpm cp /etc/ssh/sshd_config /etc/ssh/sshd...

    Centos7.2 7.4 7.6 7.8升级openssh9.6方法和详解(脚本一键升级)

    使用以下脚本内容: 如果ssh不能登录,将sshd恢复 cp /etc/ssh/sshd_7.4p1_pam_bak /etc/pam.d/sshd #!/bin/bash echo "备份sshd_config配置文件及sshd_pam文件" cp /etc/ssh/sshd_config /etc/ssh/sshd_config_7.4...

    openssh 9.3p1 for bclinux euler& openeuler22.03版本

    报错159行有问题,将/etc/ssh/sshd_config第159行配置注释掉。 cat -n /etc/ssh/sshd_config|grep GSSAPIKexAlgorithms 159 #GSSAPIKexAlgorithms gss-group14-sha256-,gss-group16-sha512-,gss-curve25519-sha256...

    CentOS 7 openssh8.1p1 rpm包

    使用前记得备份 cp -p /etc/pam.d/sshd /etc/pam.d/sshd.old cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.old rpm -Uvh ./*.rpm 升级完记得恢复配置与删除原来openssh生成的key rm -rf /etc/ssh/ssh_host...

    OpenSSH 9.3 CentOS7 RPM安装包

    基于centos7编译的openssh9.3的安装包,使用x11-ssh-askpass让openssh不在依赖openssl1.1.1。 更新前:注意备份好/etc/ssh和/etc/pam.d/ ,一般建议开启telnet增加一条备用登陆通道 更新操作:rpm -Uvh openssh-*....

    openssh 9.3p1 for bclinux & 龙蜥Anolis 8.6版本

    升级时,只需使用如下3个包即可 openssh-clients-9.3p1-1.el8.bclinux.x86_64 openssh-9.3p1-1.el8.bclinux.x86_64 openssh-server-9.3p1-1.el8.bclinux.x86_64 升级方法: 备份文件:cp /etc/ssh/sshd_config /...

    OpenSSH图形编辑器Config::Model::OpenSsh.zip

    Config::Model::OpenSsh 是 OpenSSH 配置文件的图形编辑器(比如:/etc/ssh/sshd_config, /etc/ssh/ssh_config, or ~/.ssh/config),提供其他用户接口(curses and terminal)。开发者可以选择使用 Perl API 来修改...

    openssh-8.3p1-1.el7.centos.x86_64.tar.gz

    cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.old # 升级 rpm -Uvh ./openssh*.rpm # 清除之前形成的key文件 rm -rf /etc/ssh/ssh_host_*key # 恢复之前的openssh配置 cat /etc/pam.d/sshd.old > /etc/pam.d/...

    openssh-server -Ubuntu18.04远程服务离线安装包

    sudo dpkg -i openssh-client_1%3a7.6p1-4ubuntu0.6_amd64.deb sudo dpkg -i ncurses-term_6.1-1ubuntu1.18.04_all.deb sudo dpkg -i openssh-sftp-server_1%3a7.6p1-4ubuntu0.6_amd64.deb sudo dpkg -i openssh-...

    bclinux升级ssh-openssh 9.5

    openssh-9.5p1-1.el8.bclinux.x86_64.rpm openssh-clients-9.5p1-1.el8.bclinux.x86_64.rpm openssh-server-9.5p1-1.el8.bclinux.x86_64.rpm update.sh

    openssh-8.3_centos6_centos7.tar.gz rpm包

    tar -zxvf /$work_dir/openssh-8.3_centos6_centos7.tar.gz rpm -Uvh *.rpm chmod 400 /etc/ssh/ssh_host_ecdsa_key chmod 400 /etc/ssh/ssh_host_ed25519_key chmod 400 /etc/ssh/ssh_host_rsa_key echo ...

    OpenSSH安全下载,最新版本

    OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。SSH协议族可以用来进行远程控制, 或在计算机之间传送文件。而实现此功能的传统方式,如telnet(终端仿真协议)、 rcp ftp、 rlogin、rsh都是极为不安全的,并且...

    centos 系统 openssh 升级

    openssh 升级,开箱即用,有详细的教程 确认当前版本 ssh -V #备份现有的openssh配置 mkdir -p /etc/ssh.bak/ cp -ra /etc/ssh/ /etc/ssh.bak/ cp -ra /etc/pam.d/ /etc/ssh.bak/ #安装rpm包 rpm -Uvh openssh-8.9...

    Openssh-8.3p1编译安装包.tar.zip

    tar xzvf openssh-8.3p1.tar.gz ./configure --prefix=/usr/ --sysconfdir=/etc/ssh/ --with-ssl-dir=/usr/local/ssl --with-md5-passwords --mandir=/usr/share/man/ make && make install echo ...

    ubuntu open ssh 离线安装包

    1.将4个文件放在一个单独的文件夹中,建议新建一个 2.命令行进入该文件夹 cd [你的新建文件夹] 3.执行 sudo dpkg -i openssh-client_7.2p2-4_amd64.deb sudo dpkg -i openssh-sftp-server_7.2p2-4_amd64.deb ...

    centos 升级ssh到openssh7.6

    centos 升级ssh到openssh7.6以及部署和遇到问题的解决方法

    windows下ssh工具openssh

    “openssh for windows”这个项目是一个用cygwin包装了最小的openssh服务端和客户端的工具,基本的ssh、scp、sftp、ssh-agent、ssh-keyscan 命令都具备,安装程序会自动注册Path目录和注册表,现在就能直接在命令行...

    在线自动升级openssh9.0p1的shell脚本,亲测可用!

    openssh_download="https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/$openssh_version.tar.gz" # Function :openssh-9.0p1 update # # Platform :Centos7.X # # Version :2.0 # # Date :2022-05-01 #

    openssh-9.3.p1 rpm包

    yum localinstall -y openssh-clients-9.3p1-1.x86_64.rpm openssh-9.3p1-1.x86_64.rpm openssh-server-9.3p1-1.x86_64.rpm 3.检查sshd的配置文件是否正常。 sshd -t 4.将 GSSAPIKexAlgorithms /etc/ssh/sshd_...

    SSH及OpenSSH简介

    SSH及OpenSSH简介SSH(Secure Shell)是以远程联机服务方式操作服务器时的较为安全的解决方案。它最初由芬兰的一家公司开发,但由于受版权和加密算法的限制,很多人转而使用免费的替代软件OpenSSH。

Global site tag (gtag.js) - Google Analytics