php远路copy以及执行命令
php远程copy以及执行命令
php远程copy以及执行命令
php远程copy文件以及在远程服务器中执行命令时,所用到的模块是ssh2,以后所有的操作都依据ssh2连接句柄完成。
1. SSH2模块的安装
1.1 安装需要的扩展包
wget http://www.libssh2.org/download/libssh2-1.4.2.tar.gz tar zxf libssh2-1.4.2.tar.gz cd libssh2-1.4.2 ./configure && make && make install
wget http://pecl.php.net/get/ssh2-0.11.3.tgz cd ssh2-0.11.3 phpize (如果报错命令没有找到,apt-get install php5-dev) ./configure ―with-ssh2 && make && make install
1.2 修改php配置信息
cd /etc/php5/cgi vim php.ini 添加项:extension=/usr/lib/php5/20090626/ssh2.so ssh2.so是编译ssh2时得到的模块,上面是模块的位置。
cd /etc/php5/cli vim php.ini 添加项:extension=/usr/lib/php5/20090626/ssh2.so ssh2.so是编译ssh2时得到的模块,上面是模块的位置。
1.3 重启web服务器
/etc/init.d/lighttpd restart
1.4 查看是否加载了ssh2
[root@localhost ~]php -m | grep ssh2 ssh2
2. SSH2模块的连接应用
SSH2连接有两种方式,分别是用户名密码,ssh密钥形式。
2.1 用户名与密码
$connection = ssh2_connect("192.168.6.222",22); if (ssh2_auth_password($connection,"veno","ubuntu")) { echo "Authentication Successful! "; }else{ die("Authentication Failed..."); }
2.2 ssh密钥
$connection = ssh2_connect('192.168.6.222', 22, array('hostkey'=>'ssh-rsa')); if (ssh2_auth_pubkey_file($connection, 'root', '/root/.ssh/id_rsa.pub', '/root/.ssh/id_rsa')) { echo "Public Key Authentication Successful\n"; } else { echo ('Public Key Authentication Failed'); }
Ps: 密钥生成:
在服务器192.168.6.229上面以root登录
#ssh-keygen
有什么提问基本上回车即可
后成的公钥在~/.ssh/id_rsa.pub
如果想在229通过密钥验证登录到222上面,则把229的公钥id_rsa.pub cp到222上面,先手动登录root,然后运行:
cat id_rsa.pub >> ~/.ssh/authorized_keys
这样就可以在229上面ssh 192.168.6.229不需要输入密码即可登录到222。上面php代码在229上面也可以通过验证。
3. SSH2模块的具体应用
通过SSH2验证通过后,得到的连接符为$connection
3.1 实现远程copy文件
远程服务器文件copy到本地:
bool ssh2_scp_recv ( resource $session, string $remote_file, string $local_file )
Ps: 接收文件时,后面文件名可以为空,如:
ssh2_scp_recv($connection, '/home/xiaozl/veno1.exe', '/home/xiaozl/')
本地文件copy到远程服务器
bool ssh2_scp_send ( resource $session, string $local_file, string $remote_file [, int $create_mode] )
Ps:发送文件时,后面的文件名不能为空,如:
ssh2_scp_send($connection, '/home/xiaozl/package.xml', '/home/xiaozl/package.xml');
3.2 执行远程服务器上的命令并取返回值
resource ssh2_exec( resource $session, string $command [, string $pty [, array $env [, int $width [, int $height [, int $width_height_type]]]]] )
在229上面执行222上的命令具体实例:
$tcmd="cd /home/veno/gateway/radiusclient;"; $tcmd.="./nastool.sh get-status app=2b1c5364-db39-c76d-842c-11d4a81d555d"; $stream = ssh2_exec($connection, $tcmd); stream_set_blocking($stream,true); echo stream_get_contents($stream);
附件:测试中应用到的php代码
<?php echo "是访问到这里来了"; $connection = ssh2_connect('192.168.6.222', 22, array('hostkey'=>'ssh-rsa')); if (ssh2_auth_pubkey_file($connection, 'root', '/root/.ssh/id_rsa.pub', '/root/.ssh/id_rsa')) { echo "Public Key Authentication Successful\n"; //$flag=ssh2_scp_recv($connection, '/home/xiaozl/veno1.exe', '/home/xiaozl/'); //接收时,后面文件名可以为空 //$flag=ssh2_scp_send($connection, '/home/xiaozl/package.xml', '/home/xiaozl/package.xml'); //发送时,后面的文件名不能为空 //echo $flag; $tcmd="cd /home/veno/gateway/radiusclient;"; $tcmd.="./nastool.sh get-status app=2b1c5364-db39-c76d-842c-11d4a81d555d"; $stream = ssh2_exec($connection, $tcmd); stream_set_blocking($stream,true); echo stream_get_contents($stream); } else { echo ('Public Key Authentication Failed'); } echo "<br>"; $connection = ssh2_connect('192.168.6.222', 22); ssh2_auth_password($connection, 'veno', '*******'); $tcmd="cd /home/veno/gateway/radiusclient;"; $tcmd.="./nastool.sh get-status app=2b1c5364-db39-c76d-842c-11d4a81d555d"; $stream = ssh2_exec($connection, $tcmd); echo "<br>"; echo "-----------------------------------------------"; stream_set_blocking($stream,true); echo stream_get_contents($stream); echo "-----------------------------------------------"; echo "<br>";

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제










![Windows 11 전체 튜토리얼의 텔넷 [설치/활성화 및 문제 해결]](https://img.php.cn/upload/article/000/000/164/168476253791019.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
<p>텔넷은 "터미널 네트워크"의 약어입니다. 사용자가 한 컴퓨터를 로컬 컴퓨터에 연결하는 데 사용할 수 있는 프로토콜입니다. </p><p>여기서, 로컬 컴퓨터는 연결을 시작하는 장치를 의미하며, 로컬 컴퓨터에 연결된 컴퓨터를 원격 컴퓨터라고 합니다. </p><p>Telnet은 클라이언트/서버 주체에서 실행되며 오래되었지만 2022년에도 여전히 많은 사람들이 사용하고 있습니다. 많은 사람들이 이미 Microsoft에서 제공하는 최신 운영 체제인 Windows 11 운영 체제로 전환했습니다. &

클라우드 컴퓨팅과 사물 인터넷의 발달로 인해 서버의 원격 운영이 점점 더 중요해지고 있습니다. Python에서는 Paramiko 모듈을 사용하여 SSH 원격 작업을 쉽게 구현할 수 있습니다. 이 기사에서는 Paramiko의 기본 사용법과 Python에서 Paramiko를 사용하여 서버를 원격으로 관리하는 방법을 소개합니다. Paramiko는 무엇입니까? Paramiko는 SSH 클라이언트를 연결하고 제어하는 데 사용할 수 있는 SSHv1 및 SSHv2용 Python 모듈입니다.

RDP(원격 데스크톱 프로토콜)는 친숙한 그래픽 인터페이스를 제공하기 때문에 대부분의 Windows 사용자에게 항상 원격 관리를 위한 첫 번째 선택이었습니다. 그러나 보다 세부적인 제어가 필요한 시스템 관리자의 경우 SSH가 더 적합할 수 있습니다. SSH를 통해 관리자는 명령줄을 통해 원격 장치와 상호 작용할 수 있으므로 관리 작업이 더욱 효율적으로 이루어질 수 있습니다. SSH의 장점은 보안과 유연성으로, 특히 다수의 장치를 처리하거나 자동화된 작업을 수행할 때 관리자가 원격 관리 및 유지 관리 작업을 더 쉽게 수행할 수 있다는 것입니다. 따라서 RDP는 사용자 친화성 측면에서 뛰어나지만 시스템 관리자에게는 SSH가 성능과 제어 측면에서 우수합니다. 이전에는 Windows 사용자가 빌려야 했습니다.

CONNECTION_REFUSED는 일반적으로 원격 서버에 연결을 시도할 때 발생하는 네트워크 연결 오류입니다. 클라이언트 장치가 서버와의 네트워크 연결 설정을 시도하고 서버가 연결 요청을 거부하면 CONNECTION_REFUSED 오류가 반환됩니다. 일반적인 이유는 다음과 같습니다: 서버가 시작되지 않음, 서버가 추가 연결 요청을 수락할 수 없음, 서버 방화벽이 연결을 차단함 등.

1. SSH 상호 신뢰의 목적 1. SSH 상호 신뢰는 클러스터를 구축할 때 필요하며 이는 다른 노드에서 편리한 작업에 도움이 됩니다. 2. scp 원격 복사 작업을 사용할 때 대상 서버의 사용자 이름과 비밀번호를 입력해야 합니다. 이때 Linux 서버 간에 SSH 상호 신뢰를 구성하면 여러 서버 간 작업 시 비밀번호 없이 로그인할 수 있습니다. 리눅스 서버. 2. SSH 상호 신뢰 구성의 원칙은 간단히 말하면, 서버는 비밀번호를 입력하지 않고도 자동으로 인증이 완료될 수 있도록 대상 호스트의 인증서를 저장합니다. 3. SSH 상호 신뢰 구성 단계 1. 각 노드는 자체 공개 키와 개인 키 쌍을 생성합니다. 2. 공개 키 파일을 상대방에게 보냅니다. 3. 상호 신뢰 구성이 성공했는지 확인합니다. 4. 여기에서 MYDB01을 사용하여 SSH 상호 신뢰를 구성하고

해결 방법: 1. 네트워크 연결을 확인합니다. 2. 서버 상태를 확인합니다. 3. 캐시와 쿠키를 삭제합니다. 4. 방화벽 및 보안 소프트웨어 설정을 확인합니다.

배경: 원격 서버의 Mysql 데이터베이스에 접속해야 하는데, Mysql 데이터베이스의 보안 기간 동안 로컬 연결만 허용하도록 보안 조치가 설정되어 있습니다(즉, 서버에 로그인해야 사용 가능) ), 기타 원격 접속은 직접 접속이 불가능하며, 해당 포트도 수정되었기 때문에 ssh 기반으로 데이터베이스에 접속해야 합니다. 이런 방식으로 데이터베이스에 연결하는 것은 SSH 연결 기반의 Navicat 인터페이스와 동일합니다. Navicat은 데이터베이스 설치 지원 라이브러리에 연결합니다. Mysql에 연결하려면 먼저 pymysqlpipinstallpymysql을 설치하여 ssh 기반 라이브러리 sshtunnelpipinstallsshtunnel#을 설치해야 합니다.

CentOS7.9는 서버 구축이나 시스템 관리 시 매우 일반적으로 사용되는 운영 체제 버전입니다. 이 문서에서는 CentOS7.9 설치 및 SSH 설치에 대한 자세한 단계와 지침을 제공합니다. CentOS7.9는 무료 오픈 소스 Linux 운영 체제이며 Red Hat Enterprise Linux(RHEL) 기반의 바이너리 호환 버전입니다. CentOS7.9를 설치하는 단계는 다음과 같습니다. 1. ISO 이미지 파일을 다운로드해야 합니다. CentOS7.9 버전은 CentOS 공식 홈페이지의 최신 CentOS7.9 ISO 이미지 파일 다운로드에서 다운로드하실 수 있습니다. 2. 컴퓨터에 새 가상 머신이나 물리적 머신을 생성하고 설치합니다.
