我正在尝试通过Mac OS X 10.6上的命令行使用PHP建立到远程服务器的交互式SSH连接.我目前正在使用PHP的proc_open函数来执行以下命令:
ssh -t -t -p 22 user@server.com
Run Code Online (Sandbox Code Playgroud)
这几乎可行.该-t -t选项都应该强制伪终端,他们几乎做.我可以输入SSH密码并按Enter键.但是,按下后,终端似乎只是挂起.没有输出,没有任何东西 - 就像SSH会话失败一样.我无法运行命令或任何东西,必须使用Ctrl + C杀死整个事物.我知道登录成功,因为我可以执行命令,ssh -t -t -p 22 user@server.com "ls -la"并获得正确的输出.
我认为这个问题必须与我在proc_open调用中使用标准管道的事实有关,所以我用pty替换它们.我收到以下错误:"此系统不支持pty伪终端......"
Mac OS X根本不支持pty或伪终端吗?(我很擅长使用所有这些shell术语).
这是PHP代码:
$descriptorspec = array(0 => array("pty"), 1 => array("pty"), 2 => array("pty"));
$cwd = getcwd();
$process = proc_open('ssh -t -t -p 22 user@server.com', $descriptorspec, $pipes, $cwd);
if (is_resource($process))
{
while (true)
{
echo(stream_get_contents($pipes[1]));
$status = proc_get_status($process);
if (! $status["running"])
break;
}
}
Run Code Online (Sandbox Code Playgroud)
(对不起 - 我不能为我的生活弄清楚SO的格式说明......)
我究竟做错了什么?为什么我不能用pty?这在Mac OS X上是不可能的吗?谢谢你的帮助!
SSH在我国被封锁,所以我必须使用所谓的叉形SSH软件混淆- OpenSSH的,我在Linux操作系统/ opt目录中安装了它,我怎么可以强制git的使用/opt/ob-openssh/bin/ssh不/usr/bin/ssh?
我刚获得了PhpStorm的许可证,我尝试设置密钥对,可以将代码拉到Gitlab,但我找不到在哪里以及如何制作这个?我在哪里这样做?问题似乎与PhpStorm没有使用root权限有关.
我已经设置好在我的本地机器上共享一个ssh连接,但是当我尝试在我们的CI服务器上执行此操作时,它失败了,我无法解决原因.
〜/ .ssh/config是
StrictHostKeyChecking=no
Host *
ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r
ControlPersist 2h
Run Code Online (Sandbox Code Playgroud)
第一个连接将失败,但会创建套接字,第二个连接将失败,因为套接字是陈旧的.
第一次连接的详细输出结束是....
$ ssh -vvvv -N user@domain.co.uk
....
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.6
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1
debug1: match: OpenSSH_6.6.1 pat OpenSSH_6.6.1* compat 0x04000000
....
Authenticated to domain.co.uk ([88.47.112.93]:22).
debug1: setting up multiplex master socket
debug3: muxserver_listen: temporary control path /home/rof/.ssh/control:domain.co.uk:22:user.3HfyjbhRCDHGwnrI
debug2: fd 4 setting O_NONBLOCK
debug3: fd 4 is O_NONBLOCK
debug3: fd 4 is …Run Code Online (Sandbox Code Playgroud) 我在使用 ssh proxy 命令时遇到一些问题。代理上的身份验证工作正常,但是当我想登录远程主机时,它失败了。问题似乎是,代理尝试使用我的本地 rsa_key 登录,而不是使用存储在代理上的密钥登录。有没有办法来解决这个问题?
本地 -- 本地 rsa --> 代理 -- 代理 rsa --> 主机
Host 192.168.178.32
HostName 192.168.178.32
User user
Port 22
IdentityFile ~/.ssh/id_rsa.pub
Host 192.168.178.30
HostName 192.168.178.30
User user
Port 22
IdentityFile home/user/.ssh/id_rsa.pub
ProxyCommand ssh -W %h:%p -F ssh_config -p 22 192.168.178
Run Code Online (Sandbox Code Playgroud) 我在libre办公室打开了我的公钥并编辑了密钥的评论部分然后保存了.但是当我跑步时:
ssh-keygen -l -f id_rsa.pub
Run Code Online (Sandbox Code Playgroud)
我明白了:
id_rsa.pub is not a public key file.
Run Code Online (Sandbox Code Playgroud)
该文件不再被识别为公钥文件.我该如何解决这个问题?
我正在尝试从脚本执行ssh-add(此时不关心安全性).
现在ssh提示密码短语,需要自动化,所以我读了几个像这样的东西,发现期望.
现在我做以下事情:
eval `ssh-agent -s`
Run Code Online (Sandbox Code Playgroud)
脚本tmp.sh定义为:
#!/usr/bin/expect
spawn ssh-add /root/.ssh/id_rsa
expect "Enter passphrase for /root/.ssh/id_rsa:"
send "my_pass"
interact
Run Code Online (Sandbox Code Playgroud)
./tmp.sh
ssh-add -l
如果ssh-add可行,它会显示类似的内容
4096 SHA256:wlfP/nhVSWXLcljBOen5GSYZXJGgfi/XJWfZeBwqRsM id_rsa (RSA)
但相反,我得到The agent has no identities.像ssh-agent似乎失去了它的上下文.
我愿意接受其他解决方案来做到这一点.
我想通过 SSH(PHP 脚本)启动一个 java 进程(Minecraft 服务器)。并且在断开连接时它不应该关闭。
我正在使用适用于 Windows 和 64 位 Java 的 Bitvise SSH 服务器。我可以启动服务器,但是如果我与 ssh 服务器断开连接,那么 java 进程(Minecraft 服务器)就会停止。我试过 PUTTY 但同样的问题。
是否有用于 cmd 的命令,例如用于 Linux 的 screen 将进程置于后台?
谢谢。
我无法从我的 MacBook 连接到 EC2 (CentOs)。当我从 ubuntu 机器连接它时,它将被连接。目前,我收到以下错误:
ec2 ssh sign_and_send_pubkey: no mutual signature supported Account locked due to 290 failed logins
Run Code Online (Sandbox Code Playgroud)
我该如何解决问题?
我尝试了以下命令:
ssh -i key.pem ec2-user@ip
Run Code Online (Sandbox Code Playgroud) 在.ssh/config,我RemoteForward为给定域中的所有主机设置了一个:
Host *.[domain]
RemoteForward [remote-port] 127.0.0.1:[local-port]
Run Code Online (Sandbox Code Playgroud)
如何为该域中的特定主机取消设置该参数(例如git.[domain])?