linux 退出服务器_在android搭建个人的文件中心(3)--Termux中安装ssh服务器并用作sftp服务器...

本文是为了实现“在自已的android手机上运行文件服务器”这个想法而写的。

本文续 在android搭建个人的文件中心(2)--Termux 这篇文章。

未完待续


说到文件服务器,大家一般会想到ftp。

ftp是明文传输,它的安全性没有密文传输的sftp好。sftp与ftp的原理完全不同,它是靠ssh(secure shell)来实现的。

ssh由ssh服务器和远程终端或客户端构成,它们之间进行加密的通迅,所以secure。

根据上述原理,在android运行一个ssh服务器,在其它设备运行sftp的客户端,就可以实现其它设备对android内部存储的访问。

1.在Termux上安装ssh 服务器

在Termux中安装openssh[1]

$ pkg install openssh

如果没有任何警告,安装就完成了。

创建密码[2]

sshd通常有两种加密方式,一种是密码,一种是密钥。密码就是登陆termux终端的帐户对应的密码。我们打开termux终端的时候没有输入帐户名和密码,这个真实的linux环境是不同的。

为了使用密码验证,我们可以在termux终端用passwd命令来创建当前用户的密码。

4fd0b6ebff260edbabb5bb580139f1c4.png

检查下sshd是否安装成功

首先启动sshd服务器,在命令行输入sshd。通常sshd服务器的端口一般是22,但termux上是8022,这可能是为了防止冲突。

$ sshd

用ssh命令在termux终端连接sshd服务器。

$ ssh 127.0.0.1 -p 8022

如果是第一次连接,会提示你从未连接过这个服务器,问你还连不连“are you sure you want to continue connecting (yes/no/[fingerprint])?”,输入yes。然后输入密码。

linux 退出服务器_在android搭建个人的文件中心(3)--Termux中安装ssh服务器并用作sftp服务器..._第1张图片

如果成功了,会出现一个新打开的termux终端,如下图所示。

linux 退出服务器_在android搭建个人的文件中心(3)--Termux中安装ssh服务器并用作sftp服务器..._第2张图片

这证明安装成功了,用exit命令退出这个终端,回到刚才的界面。

$ exit

创建密钥[1]

密码验证远没有密钥认证安全,仅用于不方便用密钥的场合。

密钥可以用下面方法产生。

$ cd
$ ssh-keygen

用cd是为了确保回到home。ssh-keygen会在home下的.ssh文件夹下产生私钥id_rsa和公钥id_rsa.pub。

把公钥的内容写到授权钥匙的名单authorized_keys上。修改公钥的权限为本人可读写,本人之外不可读写和运行。

600 ~/.ssh/authorized_keys

私钥是要放到客户端指定文件夹下的,因系统而异,linux是~/.ssh。

2.用sshd作sftp服务器

一般配置

在termux中使用sshd的方法与linux中并无两样。

sshd的配置文件如下写就行。

PrintMotd no
PasswordAuthentication yes
PubkeyAcceptedKeyTypes +ssh-dss
Subsystem sftp /data/data/com.termux/files/usr/libexec/sftp-server

在termux中使用上面文件启动sshd即可

$sshd -f 上面的/配置/文件/的路径

仅监听指定ip

为了更安全,我们通常只希望家庭局域网或手机热点网络所连接的设备能够访问手机的sftp 服务器,而互联网上其它设备不管有没有密钥都无法访问。

这时我们需要在配置文件中加上一句ListenAddress $ANDROID_s_IP

家里的路由和手机的热点一般是动态分配ip,也是就是说手机的ip总是变化的。

因此可以写个脚本得到android的ip,具体方法因设备而异,假设脚本的名字是android_ip,且已加入path。

然后我们写另一个脚本来自动生成sshd的配置文件,并用它启动sshd。

#generating .ssh/sshd_config
cat > ~/.ssh/sshd_config <<-_EOF_
	PrintMotd no
	PasswordAuthentication yes
	PubkeyAcceptedKeyTypes +ssh-dss
	Subsystem sftp /data/data/com.termux/files/usr/libexec/sftp-server
	#ListenAddress $(android_ip)
_EOF_
sshd -f ~/.ssh/sshd_config

参考

  1. ^abRun an SSH server on your Android with Termux  https://glow.li/technology/2015/11/06/run-an-ssh-server-on-your-android-with-termux/
  2. ^termux wiki remote_accesss https://wiki.termux.com/wiki/Remote_Access

你可能感兴趣的:(linux,退出服务器,win,2016,ssh)