通过PHP连接SSH – Laravel
大家好
我将尽可能清楚地解释我的问题,如果你不明白我的意思,请随时问我更精确,并原谅我的英语,这不是我的母语. 我的目标 我想做的事情看起来很简单.假设我有2台服务器:S1和S2. 你必须知道的事情 >在命令行中,我可以通过S1连接SSH到S2:ssh -tt -p 2222 myRemoteUser @ myRemoteIp.这工作正常. 我不同的尝试 为了达到这个目标,我尝试了很多东西.首先,我使用Laravelcollective SSH 5.2来从我的Laravel应用程序中使用SSH. return [ default' => 'S1','connections' => [ 'S1' => [ 'host' => '127.0.0.1','username' => 'myUsername','password' => 'myPassword','key' => '','keytext' => '','keyphrase' => '','agent' => '','timeout' => 10,],'S2' => [ 'host' => 'myRemoteIP','username' => 'myRemoteUser','port' => '2222','password' => '','timeout' => 30,'directory' => '/home/myRemoteUser/' ] 试试1 SSH :: into(‘S2’) – > run([‘mkdir imAtestDirectory’]); 每次我尝试使用SSH :: into(‘S2’)我都会得到一个无法连接到远程服务器RuntimeException. 我尝试没有任何SSH密钥,在keytext字段中使用私有/公共SSH密钥,但我仍然得到相同的错误. 我试图将关键字段中的路径放到我的键中,但它说文件?/ .ssh / mykey不存在. 将我的密钥移动到另一个地方也不起作用,我无法再次连接到远程服务器. 试试2 SSH :: into(‘S1’) – > run([‘ssh -tt -p 2222 myRemoteUser @ myRemoteIp’,’mkdir testDir’]) 我试图在命令行中重现我正在做的事情,因为我知道它可以工作.我觉得我正在连接到S2,当我正在查看SSH命令返回的内容时我正在[…] Debian GNU / Linux系统附带的程序是免费软件[…]当我在命令行中执行命令时,我得到的消息是相同的,但它不是创建文件夹. 请帮帮我 我的想法已经不多了,我一直在谷歌搜索几个小时,但我找不到如何解决我的问题或任何其他方式做我想做的事情. 如果您需要更高的精度,请随时询问. 编辑 >我一直在尝试其他语法,但没有成功.我仍然对任何建议持开放态度,接下来我会尝试Dammeul所说的(检查端口2222两端是否打开) 解决方法
如果您实际上可以通过“尝试2”登录,则应该以不同方式运行代码.使用ssh命令附加命令.你现在正在做的是首先运行ssh(可能会挂起)然后在ssh完成时运行“mkdir”.代替:
SSH::into('S1')->run(['ssh -tt -p 2222 myRemoteUser@myRemoteIp "cd && mkdir testDir"']) (我还添加了cd以确保您在主目录中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |