引言
本文主要内容:
(1)安装ssh
(2)mac下使用ssh乱码的问题
(3)受限sftp账户管理
1 安装ssh
1.1 Centos下安装ssh
搜索ssh相关软件源:yum search ssh
安装openssh-server:yum install openssh-server
1.2 ubuntu下安装ssh
安装ssh:apt-get install openssh-server
如果出现下列错误:package openssh-server has no installation candidate
可以更新软件源:apt-get upgrade
安装完成后,通过命令查看ssh是否已经运行:ps -e | grep ssh
可以看到进程:sshd
默认为22端口,可以通过下列命令配置:vim /etc/ssh/sshd_config
,另外,ubuntu默认Root用户无法访问
,或访问可以不通过密码,也是修改上述文件,将如下变量配置为:PermitRootLogin yes
启动ssh:/etc/init.d/ssh start
,停止:/etc/init.d/ssh stop
。如果不能启动,在/etc/hosts里添加本地的ip,再重启机器即可
重启ssh服务:service ssh restart
2 mac下使用ssh乱码
(1)编辑vim ~/.zshrc
,输入以下内容:
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
(2)查看 locale
,显示如下内容:
zLANG="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_CTYPE="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_ALL="en_US.UTF-8"
两边都要这样弄,OK
3 受限sftp账户管理
(1)查看ssh版本:ssh -V
(2)添加用户组:groupadd sftpusers
(3)添加用户并关闭ssh登录功能:seradd -s /bin/false -G sftpusers hehj
如果去尝试登录 #ssh hehj@localhost
,则会提示仅支持连接,不支持登录,如下:
The authenticity of host 'localhost (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:VXGX1HbDWzQ7UyxZDV4uMq4hGeHnrJPCO7ks/nltFXY.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
hehj@localhost's password:
Permission denied, please try again.
hehj@localhost's password:
This service allows sftp connections only.
Connection to localhost closed.
(4)设置密码:passwd hehj
(5)编辑/etc/ssh/sshd_config
,找到Subsystem这个配置项,将其修改为:Subsystem sftp internal-sftp
,然后再到文件最尾处增加配置设定属于用户组sftpusers的用户都只能访问自己的文件夹:
Match Group sftpusers
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
ChrootDirectory /data/sftp/%u #需在 /data/sftp/ 创建user文件夹,该文件夹就是登录的sftp用户目录
(6)修改user用户所在文件夹的权限,让其属于root用户:# chown root /data/sftp/user
(7)重启sshd服务:# service sshd restart
最终效果:可以在指定目录里上传删除,但是不能修改已经存在的属于root
更多问题,登陆后你会发现你的账号无法切换到除自己本身目录之外的地方,或者登录失败,看下面可能出现的问题; (1)如果在链接服务器的时候出现下面的提示:
Write failed: Broken pipe
Couldn't read packet: Connection reset by peer
这个问题的原因是ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root,权限是750
或者755。解决办法,设置user目录为root权限:# chown root:user /data/sftp/user #chmod 750 /data/sftp/user
(2)Sftp用户登录后不能在本目录操作:
是因为登录后的目录是root权限,需将sftp账号赋予root权限,操作方法将/etc/passwd
文件中对应的sftp的用户ID修改为0,
这样就可以有权限操作登录后的目录了(还有其他赋予权限方法,ps另行查找),Eg:user:x:503:505::/home/darops:/bin/false
将503改为0