建立SFTP共享账户

建立SFTP共享账户
Create SFTP share account

做学术的时候往往需要交流数据。目前最安全简便的解决方案是用SFTP传输文件协议。
为此,需要配置Linux服务器,并为学术伙伴建立一个不能登录、只能用SFTP的账号。

下面是步骤:

1. 建立用户组

addgroup --system filetransfer

2. 设定用户目录和相应权限
以用户名username为例:

mkdir /home/username
mkdir /home/username/data
chown root:root /home/username
chown username:filetransfer /home/username/data
chmod 755 /home/username
chmod 700 /home/username/data

权限755可以允许sftp用户登录到其HOME目录/home/username
权限700可以防止上传的数据被其他用户访问

3. 建立用户

useradd -d /home/username -s /usr/lib/sftp-server -M -N -g filetransfer username

-d 指定HOME目录
-s 指定登录shell
-M 不创建HOME目录
-N 不创建以username为名的 用户组
-g 指定user group

4. 配置ssh

打开 /etc/ssh/sshd_config

见到这行之后:Subsystem sftp /usr/lib/openssh/sftp-server
改称:Subsystem sftp internal-sftp
然后在末尾加上:

Match group filetransfer
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

5. 配置登录shell

在/etc/shells末尾加上一行:

/usr/lib/sftp-server

6. 最后重启ssh 服务器就好了

service ssh restart

给主机起别名(SSH)

Give SSH hostname alias names.

当使用SSH登录远端的主机时,常常要输入长长的一串主机名,比如:xxx@wonderland.sph.umich.edu。
我发现了一个简便的方法:
在.ssh/config里面加入下面的字段:
Host won
Hotname wonderland.sph.umich.edu
这样只需要输入ssh won,就可以登录wonderland.sph.umich.edu主机了。
上面的方法可以使用ssh,sftp。

还有一个更简便的方法可以使用ssh,但不能兼顾sftp,就是用bash alias功能,比如:
alias won=’ssh xxx@wonderland.sph.umich.edu’
那么只需要输入won就可以登录了。