使用 PHP SSH 进入一台机器
SSH into a machine using PHP
我正在尝试
- 通过 SSH 连接到我的 VM
- 转到特定目录
- 运行 一个脚本
我的命令
ssh user@45.12.129 "cd ~/scripts; pwd; ./startVM.sh"
PHP
$cmd = 'ssh user@45.12.129 "cd ~/scripts; pwd; ./startVM.sh";
$data = shell_exec($cmd);
我不确定何时输入密码。
我希望有人可以填写我错过的内容。
最简单(但不一定最安全)的方法是创建无密码 ssh 密钥并将其添加到您的 VM:
- 运行
ssh-keygen
创建一个新的 public/private 密钥对,如果您还没有(或者如果您只想为此目的创建一个新密钥)
- 将生成的 public 密钥放入虚拟机中用户的 ~/.ssh/authorized_keys 中。确保此文件只能由目标用户读取和写入。 (它应该有模式 0500。)
- ssh 现在无需密码即可使用。 (实际上,私钥 是 密码。)
- 如果要指定要使用的特定密钥,请指定
ssh -i path-to-key-file
。
警告: 请记住,允许远程执行代码可能非常危险,尤其是当目标是根帐户时。如果这是一个本地虚拟机,你应该相对安全,但在一般情况下使用这种技术时要小心,尤其是在互联网上。这样你很容易搬起石头砸自己的脚
为此,您可能想在 VM 中创建一个 non-root 用户。如果该用户需要 root 权限来完成其任务,则仅授予对 sudo
和适当的 sudoers
文件条目所需的 特定 功能的访问权限。
你能试试这样的吗?
if(!($con = ssh2_connect($ip, $port))){
echo'cannot connect';
} else {
//Auth
if(!ssh2_auth_password($con, "userssh", "password")) {
echo'authentication failed';
} else {
//Execute command
if(!($stream = ssh2_exec($con, "cd ~/scripts; pwd; ./startVM.sh" )) ){
echo 'failed executing';
} else {
echo 'sucess';
}
}
}
我正在尝试
- 通过 SSH 连接到我的 VM
- 转到特定目录
- 运行 一个脚本
我的命令
ssh user@45.12.129 "cd ~/scripts; pwd; ./startVM.sh"
PHP
$cmd = 'ssh user@45.12.129 "cd ~/scripts; pwd; ./startVM.sh";
$data = shell_exec($cmd);
我不确定何时输入密码。 我希望有人可以填写我错过的内容。
最简单(但不一定最安全)的方法是创建无密码 ssh 密钥并将其添加到您的 VM:
- 运行
ssh-keygen
创建一个新的 public/private 密钥对,如果您还没有(或者如果您只想为此目的创建一个新密钥) - 将生成的 public 密钥放入虚拟机中用户的 ~/.ssh/authorized_keys 中。确保此文件只能由目标用户读取和写入。 (它应该有模式 0500。)
- ssh 现在无需密码即可使用。 (实际上,私钥 是 密码。)
- 如果要指定要使用的特定密钥,请指定
ssh -i path-to-key-file
。
警告: 请记住,允许远程执行代码可能非常危险,尤其是当目标是根帐户时。如果这是一个本地虚拟机,你应该相对安全,但在一般情况下使用这种技术时要小心,尤其是在互联网上。这样你很容易搬起石头砸自己的脚
为此,您可能想在 VM 中创建一个 non-root 用户。如果该用户需要 root 权限来完成其任务,则仅授予对 sudo
和适当的 sudoers
文件条目所需的 特定 功能的访问权限。
你能试试这样的吗?
if(!($con = ssh2_connect($ip, $port))){
echo'cannot connect';
} else {
//Auth
if(!ssh2_auth_password($con, "userssh", "password")) {
echo'authentication failed';
} else {
//Execute command
if(!($stream = ssh2_exec($con, "cd ~/scripts; pwd; ./startVM.sh" )) ){
echo 'failed executing';
} else {
echo 'sucess';
}
}
}