一、SSHDroid简介
SSH为Secure Shell的缩写,是建立在应用层基础上的安全协议。SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。SSH客户端适用于多种平台,几乎所有UNIX平台都可运行SSH。
从客户端来看,SSH提供两种级别的安全验证:
1. 基于口令的安全验证:只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到”中间人”这种方式的攻击。
2. 基于密钥的安全验证:需要依靠密钥,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密”质询”(challenge)并把它发送给客户端软件。客户端软件收到”质询”之后就可以用你的私人密匙解密再把它发送给服务器。
SSHDroid是个免费的Android版的SSH服务器,SSH Server for Android,该应用可以让你通过PC或命令连接设备,实现无线传输和管理文件。 它要求手机和PC都连接在同一路由器(或WiFi)上。
SSHDroid最新版本为2.1.2,可以从https://www.apk20.com/apk/77332/v/73461/ 下载安装。安装后的界面如下:
二、sshpass简介
在Ubuntu中,可以通过源码安装sshpass,下载地址: https://pkgs.org/download/sshpas;也可以直接通过apt-get安装:
sudo apt-get install sshpass
ssh登录不能在命令行中指定密码,需要用户交互输入密码,sshpass解决了这个问题,它允许你用-p参数指定明文密码,然后直接登录远程服务器或手机。
sshpass支持密码从命令行、文件、环境变量中读取,所以,通过sshpass可以实现以非交互的形式为ssh提供密码。
假如远程服务器的密码为admin,端口号为port=2222,用户名为root,ip为ip=10.1.10.20:
(1). 将本机a.txt文件传到服务器,则可执行:
sshpass -p admin scp -P ${port} -r a.txt root@${ip}:~
(2). 在远程服务器上创建一个名为code的目录,则可执行:
sshpass -p admin ssh -p ${port} root@${ip} "mkdir -p code"
(3). 将远程服务器上目录名为data目录内容拷贝到本地/home/spring目录下,则可执行:
sshpass -p admin scp -P ${port} -r root@${ip}:data /home/spring/
以上内容参考:
1. https://baike.baidu.com/item/ssh/10407?fr=aladdin