SSH服务架构:C/S

S端:192.168.100.151

C端:192.168.100.150

S端操作:

yum  -y  install  openssh-clients openssh-server openssh  ##安装ssh

/etc/init.d/sshd  start

chkconfig  sshd  on

C端操作:远程链接

linux系统:

yum  -y  install openssh  openssh-clients

ssh  用户@IP 

ssh  root@192.168.100.151  ##root是S端的root用户,如果省略用户以客户机当前用户尝试登陆。

scp  本地文件  用户@IP:/远程目录  ##上传,用户必须对目录有写入权限

scp  用户@IP:/远程文件 本地目录  ##下载,用户只需对远程文件有读取权限

scp  john-*.tar.gz  root@192.168.100.151:/root/  ##上传操作

sftp  用户@IP   ##ssh的ftp上传下载文件

sftp  u01@192.168.100.151

sftp>cd  /etc/yum.repos.d/  ##可以进入非家目录

sftp>get  rhel.repo   ##下载

sftp>bye  #退出

windows系统:可以使用CRT,PUTTY,xmanager等常见的windows的客户端


SSH服务端的安全优化配置:

vi  /etc/ssh/sshd_conf

ListenAddress 192.168.100.151   ##指定监听IP,如网关中只监听内网

LoginGraceTime 2m    ##链接的无操作超时时间

PermitRootLogin no    ##禁用root使用ssh,普通用户+su完成特权配置

MaxAuthTries 6   ##密码错误次数

MaxSessions 10   ##最大链接数量,多少用户同时登录

GSSAPIAuthentication no   ##禁用GSSAIP认证方式加快ssh登录响应速度

GSSAPICleanupCredentials no   ##禁用GSSAPI

UseDNS no    ##禁用DNS的解析

AllowUsers  u01  u03  u02@IP  ##只允许u01用户登录,DenyUser拒s绝用户,不能同时使用,多个用户用空格隔开

:wq

/etc/init.d/sshd  restart 


echo  "welcome to linuxfan.cn"  >/root/welcome.txt

sed -i "/Banner/a Banner  /root/welcome.txt"  /etc/ssh/sshd_config   ##添加登录时的提示文字



密钥对认证的ssh登录

S端:确保支持,取消如下的注释

vi  /etc/ssh/ssd_config

PubkeyAuthentication yes  ##支持公约认证

AuthorizedKeysFile     .ssh/authorized_keys  ##公约存放的文件名

:wq

/etc/init.d/sshd  restart

C端生成密钥对:

ssh-keygen  -t  rsa  ##生成密钥对,一直enter键

cd  .ssh/   ##进入存放密钥对目录

上传公约:

ssh-copy-id  u02@192.168.100.151   ##给u02上传公约,u02登录就不需要密码

S端验证:

cat  /home/u02/.ssh/authorized_keys   ##查看

C端验证:

ssh  u02@192.168.100.151   ##不需要密码

注意:

S端其他用户可以使用cp公约到家目录下实现密钥对认证:

mkdir  /home/u03/.ssh/

cp  /home/u02/.ssh/authorized_keys  /home/u03/.ssh/

chown u03:u03  /home/u03/.ssh/*  

在rhel6以前,可能执行ssh-copy-id不成功,解决方法:

scp  id_rsa.pub  u02@192.168.100.151:/tmp/

cat  /tmp/id_rsa.pub  >/home/u02/.ssh/authorized_keys

S端总结:哪个账号目录下有公约,哪个账号就能使用密钥对认证登录

C端:

root账号生成密钥对

su  -  c_u01

ssh  u02@192.168.100.151  ##登录失败,原因是c_u01用户目录下无私钥

exit

cp  ./ssh/id_rsa  /home/c_u01/.ssh/

chown  c_u01:c_u01  /home/c_u01/.ssh/*

c端总结:客户端用户目录下必须要有私钥,否则无法使用密钥对。


公约认证设置成功后可以直接在不登录情况下执行命令:

ssh  u02@192.168.100.151  touch a.file  ##在C端执行,在S端以u02身份创建a.file,S端验证成功

若启用root用户的sshd:能实现远程关机

ssh  root@192.168.100.151  reboot


ssh协议支持的远程复制文件的控制:

1)禁止scp

rpm -qa|grep openssh-*

yum remove openssh-clients -y

删除了openssh-clients后,再执行scp,就会报下面的错误:

-bash: scp: command not found

2)禁止sftp

vi /etc/ssh/sshd_config

Subsystem      sftp    /usr/libexec/openssh/sftp-server

把这行注释了,如下:

#Subsystem      sftp    /usr/libexec/openssh/sftp-server

退出保存后,重启sshd:

service sshd restart


注意以下实验单独做:如果与其他配置一同也许会有错误。


禁锢用户使用sftp时的目录提高安全,u01账号专用于sftp,其他用户不允许使用sftp,u02能使用ssh登录管理系统。

vi /etc/ssh/sshd_config

#Subsystem      sftp    /usr/libexec/openssh/sftp-server  ##注释此行

Subsystem sftp internal-sftp  ##添加子系统命令

AllowUsers u01 u02   ##允许u01,u02用户

Match Group sftp_u   ##给sftp_u组设置匹配sftp的规则

 X11Forwarding no  ##禁用图像界面

 AllowTcpForwarding no  ##禁用TCP转发

 ChrootDirectory /home   ##将sftp_u组禁锢在/home/目录中

 ForceCommand internal-sftp  ##强制使用internal-sftp命令

:wq

groupadd  sftp_u

useradd  u02

echo  123123 |passwd  --stdin  u02

usermod -G  sftp_u  u01   ##添加u01到组

/etc/init.d/sshd  restart

登录验证:

ssh  u01@192.168.100.151  ###报错,提示只允许sftp

ssh  u02@192.168.100.151  ##登陆成功

sftp  u01@192.168.100.151  ##登录成功

sftp>cd  /etc/   ##报错

sftp>pwd  ##显示在根目录,表示配置成功。