ssh:Secure SHell
C/S:22/tcp,安全地址登录
Server:OpenSSH(sshd)
Client:OpenSSH(ssh,scp),
Windows工具 :xshell,putty,securecrt ,sshsecure shell client
sshprotocol version:
V1:不安全;
V2:
主机认证:需要用到主机认证密钥;由服务器维护和提供;
用户登录:
用户认证:
基于口令认证;
基于密钥认证:用户提供一对儿密钥,私钥保留在客户端,公钥保留于远程服务器端的用户家目录下;
OpenSSH:
sshd:配置文件 /etc/ssh/sshd_config
ssh:配置文件 /etc/ssh/ssh_config
客户端程序:
ssh [options] [user@]host [COMMAND]
ssh [-l user] [options] host [COMMAND]
省略用户名:
使用本地用户名作为远程登录的用户名;
常用选项:
-l user:以指定的用户登录远程主机;
-p port:用于指明远程服务器的端口;
-X:支持X11转发;
X:协议;x-Windows,C/S
X11转发的作用:在本地显示远程主机上的图形窗口;
前提:本地是X图形界面,或者提供了x service;
-o StrictHostKeyChecking=no
接收的所有认可的服务器列表:
~/.ssh/known_hosts
ssh远程连接服务器时的配置选项,定义在/etc/ssh/ssh_config配置文件中;
HOST pattern
OPTION1 VALUE
OPTION2 VALUE
…
ssh支持的用户认证方式:
基于口令认证;
基于密钥认证:
1) 在本地主机生成一对密钥;
ssh-keygen [-q] [-b bits] [-t type] [-foutput_key_file] [-P passphrase]
-t {rsa|ecdsa|dsa}:公钥加密算法类型;
-b bits:指明密钥长度;
-P passphrase:私钥加密密码;
-f output_keyfile:生成密钥的保存位置;
2) 在本地主机上,将公钥复制到要登录的远程主机的某用户的家目录下的特定文件中(~/.ssh/authorized_keys)
查看claude家目录的文件
3) 测试
scp命令:基于ssh连接完成复制
scp[options] SRC… DEST/
scp[option] SRC DEST
存在两种使用情形:
PULL:scp [options] [user@]host:PATH/TO/SOMEFILE /PATH/TO/SOMEFILE
PUSH: scp [options] /PATH/TO/SOMEFILE [user@]host:/PATH/TO/SOMEFILE
常用选项:
-r:递归复制;
-p:保持原文件的权限信息;
-q:静默模式;
-PPORT:指明远程主机ssh协议监听的端口;
sftp命令:
ftp:file transferprotocol,明文;
安全的文件传输机制;
ftps:ftp over ssl
sftp:ftp over ssh
sftp:
C/S架构
S:由sshd服务进程管理,是sshd的一个子系统,在centos系统上的openssh上,默认为启动状态:/usr/libexec/openssh/sftp-server
C:即sftp;
连接至远程主机:sftp user@host
Sftp>help
sshd(服务端)
配置文件:/etc/ssh/sshd_config(以下为部分配置文件)
格式:配置指令 值
常用指令:
Port 22
ListenAddress 0.0.0.0
Protocol 2
PermitRootLogin yes
UseDNS no
手册页:
man sshd_config
man sshd
man ssh_config
man ssh
限制可登录的用户(配置文件):
AllowUsers user1 user2 user3 …
AllowGroups grp1 grp2 …
DenyUsers user1 user2 …
DenyGroups grp1 grp2 …
Centos6:
服务脚本:/etc/rc.d/init.d/sshd
Centos7:
System unitfile:/usr/lib/system/system/sshd.servcie
Ssh服务的最佳实践:
1. 不要使用默认端口;
2. 禁止使用protocol version 1;
3. 限制可登录用户;
4. 设定空闲会话超时时长;
5. 利用防火墙设置ssh访问策略;
6. 仅监听特定的ip地址;
7. 基于口令认证时,使用强密码策略;
#tr –dc A-Za-z0-9_ < /dev/urandom | head –c 30 | xargs
8. 使用基于密钥的认证;
9. 禁止使用空密码;
10.禁止root用户直接登录;
11.限制ssh的访问频度和并发在线数;
12.做好日志,经常分析;
Ssh协议的另一个实现;dropbear
轻量化的实现方案,多用于嵌入式环境中;
常用工具:
dbclient :ssh协议客户端程序
dbclient [options] [user@]host[/port][,[user@]host/port],…][command]
dropbearkey:主机密钥生成工具
dropbearkey –t <type>-f<filename> [-s bits]
/etc/dropbear/
服务端程序:
dropbear
-p [IP:]PORT
-F:前台;
-E:将日志发往错误输出;
来源:oschina
链接:https://my.oschina.net/u/4303989/blog/4341526