Debian Linux SSH/SFTP 服务设置

1 安装:

sudo apt-get install openssh-server


2 修改 sshd_config 配置

文件在/etc/ssh/目录下。

2.1 subsystem

找到下面行:

Subsystem sftp /usr/lib/openssh/sftp-server

注释掉该行,修改subsystem为internal-sftp:

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp


2.2 其他修改

Match Group sftp
ChrootDirectory /home/SFTP

Match行的作用是引入一个条件块,这个条件块从Match行开始,直到文件结束或遇到另一个条件块。如果条件完全匹配,条件块中的设置将取代配置文件中的全局设置。

上面设置的意义是,如果用户属于sftp组则:

  • sftp登录后命令运行的根目录为/home/SFTP
  • 除非/home/SFTP中设置了用户会话所需的基本系统文件和目录,如shell、/dev等,否则ssh及其他命令不能使用,也就是说不能以ssh登录
  • 进程内的sftp(internal-sftp),不受第二条限制,即sftp可用

如果注释掉Match行,所有授权用户包括root都有以上限制。


3 设置用户及权限

SSH/SFTP直接使用系统用户登录,为了安全应设定仅允许特定组用户登录。下面新建一个用户组sftp,添加组用户ftpuser,用户家目录为/home/SFTP,但该用户不能使用shell。

sudo groupadd sftp
sudo useradd -s /usr/sbin/nologin -g sftp -d /home/SFTP ftpuser
sudo passwd ftpuser


4 建立SFTP专用目录

注意: 该目录路径中所有节点目录 均要求为root权限!!!这一点非常重要,不符合要求则无法登录。

sudo mkdir /home/SFTP
sudo chown root:root /home/SFTP
sudo chmod 755 /home/SFTP


用户登录后上传下载只能在 该目录的子目录下 进行。因此,需要预先设置一些分类目录。公共目录权限应为775,个别用户的私有目录应为700:

cd /home/SFTP
sudo mkdir public
sudo chown ftpuser:sftp public
sudo chmod 775 public
sudo mkdir xxx
sudo chown xxx:xxx xxx
sudo chown 700 xxx


5 root通过rsa密匙远程登录的设置

如果完全禁止root远程登录,管理员无法远程管理服务器,ssh的作用会大打折扣。但如果允许root通过密码登录,一旦root密码被暴力破解后果不堪设想。用rsa登录吧。

设置root用户通过rsa登录步骤:

5.1 允许root通过password以外的方式登录

这是默认设置,其实就是这一行:

PermitRootLogin without-password


PermitRootLogin可以设置为:

  • yes:允许root以任何方式登录
  • without-password:允许使用除了密码外的其他方式登录
  • forced-commands-only:command选项启用才允许root登录
  • no:不允许root登录


5.2 指定AuthorizedKeysFile

修改后差不多是这样:

# Authentication:
LoginGraceTime 120
PermitRootLogin without-password
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  %h/.ssh/authorized_keys


5.3 生成密匙

5.3.1 生成密匙

ssh-keygen -t rsa


文件名默认就好,id_rsa为私匙,id_rsa.pub为公匙,默认保存目录是 ~/.ssh/。

提示“Enter passphrase (empty for no passphrase):”的时候给密匙加上密码!

5.3.2 把公匙放到服务器上

密匙生成后如果不放到服务器上是没有任何用处的。要把公匙拷贝到服务器上特定用户的authorized_keys中。

  1. 服务器是本机

    将公匙添加到目标用户(如root)的authorized_keys文件中:

    cat /path/to/id_rsa.pub >> /root/.ssh/authorized_keys
    
  2. 服务器不是本机

    先修改服务器的sshd_conf 文件,临时允许root用户密码登录,即:

    PermitRootLogin yes
    

    然后再使用ssh-copy-id将公匙拷贝到服务器(假如服务器是 server.com):

    ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
    # 或者用: scp ~/.ssh/id_rsa.pub root@remotehost
    

    修改sshd_conf,关闭root用户的密码登录权限。


5.4 使用密匙登录

如果把私匙放在~/.ssh/下,直接ssh:

最好是把密匙放在安全地方,登录时指定文件:

ssh -i /path/to/id_rsa [email protected]

顺便说一下,只要手头有配对的私匙,公匙放到服务器上哪个用户的~/.ssh/目录下就能ssh登录该用户!


6 重启ssh服务

sudo /etc/init.d/ssh restart


7 监听端口: 22




作者: ZGUANG@LZU

Created: 2016-03-19 六 19:38

Emacs 24.4.1 (Org mode 8.2.10)

你可能感兴趣的:(Linux,&,Debian)