我想允许用户在特定端口(例如5000)上设置到特定计算机的SSH隧道,但我想尽可能地限制此用户.(身份验证将使用公钥/私钥对).
我知道我需要编辑相关的〜/ .ssh/authorized_keys文件,但我不确定要放入哪些内容(公钥除外).
我需要通过以非交互方式提供密码从Windows命令行执行ssh.我可以实现基于密钥的身份验证,并能够执行ssh命令
ssh <user>@<host> <command>
Run Code Online (Sandbox Code Playgroud)
有没有像这样的命令
ssh <user>@<host> -P <password> <command>
Run Code Online (Sandbox Code Playgroud)
我不知道它是否可行.但是,可以有一些相同的工作.给我一些想法来实现同样的目标.
client = paramiko.SSHClient()
stdin, stdout, stderr = client.exec_command(command)
Run Code Online (Sandbox Code Playgroud)
有没有办法获得命令返回码?
很难解析所有stdout/stderr并知道命令是否成功完成.
是否可以进行配置,git/ssh因此每次我想执行时都不必输入密码git pull?请注意,repo是github上的私有.
或者,或者,从私有Github仓库自动执行代码部署的最佳做法是什么?
其他细节: EC2实例运行基于Fedora的公共AMI.
我有两个问题:
远程计算机是在运行中创建的VM,我只有他们的IP.所以,我不能事先在这些机器上放置一个脚本文件,并从我的机器上执行它们.
我打开了一个ssh隧道,如本文所述:Zend_Db:如何通过SSH隧道连接到MySQL数据库?
但现在我不知道我到底做了什么.此命令是否会影响服务器上的任何内容?我如何关闭此隧道,因为现在我无法正确使用我的本地mysql.
我使用OSX Lion,服务器运行在Ubuntu 11.10上.
我有以下shell脚本.目的是循环到目标文件的每一行(其路径是脚本的输入参数)并对每一行进行操作.现在,它似乎只适用于目标文件中的第一行,并在该行被处理后停止.我的剧本有什么问题吗?
#!/bin/bash
# SCRIPT: do.sh
# PURPOSE: loop thru the targets
FILENAME=$1
count=0
echo "proceed with $FILENAME"
while read LINE; do
let count++
echo "$count $LINE"
sh ./do_work.sh $LINE
done < $FILENAME
echo "\ntotal $count targets"
Run Code Online (Sandbox Code Playgroud)
在do_work.sh,我运行了几个ssh命令.
一个比另一个更安全吗?
我试图在git clone没有ssh检查存储库主机密钥的情况下运行.我可以从ssh这样做:
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@host
Run Code Online (Sandbox Code Playgroud)
有没有办法将相同的ssh选项传递给git clone命令?
编辑:我无法修改限制~/.ssh/config或该计算机上的任何其他文件.
我试图通过VPN使用SSH将本地计算机上的本地文件"magento.tar.gz"复制到远程服务器.这是连接到虚拟机的内部IP,我在这里用作xx.xxxx.
我在SSH帐户上拥有完整的"sudo"访问权限,因此复制过程中不会出现任何问题.我尝试过以下方法:
我尝试了以下(magento.tar.gz文件已经在本地根目录)
sudo scp magento.tar.gz user@xx.x.x.xx/var/www/
Run Code Online (Sandbox Code Playgroud)
这要求我输入我的本地密码.然后返回cp: user@xx.x.x.xx/var/www: Not a directory
sudo scp /Users/myname/magento.tar.gz user@xx.x.x.xx/var/www/
Run Code Online (Sandbox Code Playgroud)
返回相同.
我是否需要在任何地方都包含SSH?
我是否需要先通过SSH连接到该站点?
旁注:我已经设法通过SSH连接到服务器,浏览到目录并创建一个文件夹并使用sudo mkdir等删除它所以我绝对有权限.