OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。SSH协议族可以用来进行远程控制, 或在计算机之间传送文件。而实现此功能的传统方式,如telnet(终端仿真协议)、 rcp ftp、 rlogin、rsh都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控件和文件传输过程中的数据,并由此来代替原来的类似服务。
OpenSSH是使用SSH透过计算机网络加密通讯的实现。它是取代由SSH Communications Security所提供的商用版本的开放源代码方案。目前OpenSSH是OpenBSD的子计划。
OpenSSH常常被误认以为与OpenSSL有关联,但实际上这两个计划的有不同的目的,不同的发展团队,名称相近只是因为两者有同样的软件发展目标──提供开放源代码的加密通讯软件。
ssh主要有两个版本V1(基本不使用),V2
客户端工具:
linux:ssh
windows:putty,securecrt,sshsecureshellclient,xmanager
服务器端工具:
linux:sshd
认证:
(1)基于口令认证
(2)基于秘钥认证
安装包:rpm -qa | grep ssh
查看ssh版本:ssh -version
相关文件:
配置文件:
客户端:/etc/ssh/ssh_config
服务器端:/etc/ssh/sshd_config
秘钥:
V2版本的秘钥:
rsa:ssh_host_rsa_key,ssh_host_rsa_key.pub
dsa:ssh_host_dsa_key,ssh_host_dsa_key.pub
V1版本的秘钥:
ssh_host_key,ssh_host_key.pub
服务器配置文件说明:
port 22 端口
AddressFamily any 指定 sshd(8) 应当使用哪种地址族。取值范围是:"any"(默认)、"inet"(仅IPv4)、"inet6"(仅IPv6)。
Protocol 2 默认使用协议版本
KeyRegenerationInterval 1h 秘钥多久更换一次
ServerKeyBits 1024 秘钥长度
LoginGraceTime 2m 登录超时时长
PermitRootLogin yes 是否允许root直接登录(建议关闭,使用普通用户登录后su到root)
MaxAuthTries 6 试错登录次数
PrintLastLog yes 打印上次登录信息(尽量不要暴露这些信息)
Subsystem sftp /usr/libexec/openssh/sftp-server 关于sftp的设置
sftp是基于ssh,ftps基于ssl
ssh使用技巧:
ssh -l 用户名 远程主机名 ['command'] 不登录远程主机,但返回命令执行结果
ssh 用户名@远程主机名
-X:enablex11 forwarding
-Y
~/.ssh/known_hosts保存登录信息,其权限为644
实验:基于秘钥的认证
1、生成一对秘钥(ssh-keygen)
ssh-keygen -t 指定算法 -f 保存文件位置及名称(默认在/home/用户/.ssh/id_rsa) -N 指定密码
2、将公钥传输至服务器端某用户家目录下的.ssh/authorized_keys文件中
(1)使用工具ssh-copy-id
用法:ssh-copy-id–i /path/to/pubkey 用户名@主机名
(2)scp,然后追加到authorized_keys
3、测试登录
总结:
1、密码要经常换
2、使用非默认端口
3、限制登录地址
4、禁止管理员登录
5、仅开放有限用户
6、使用基于秘钥的认证
7、不要使用v1版本
scp和sftp用法:
1、scp:基于ssh的远程复制命令,可以实现在主机之间传输数据
命令格式:scp [options]src dest
远程主机
用户名@主机名:/path/to/somefile
options常用选项有以下几种:
-r: 递归复制,复制目录时使用
-p:保持源文件的元数据信息;主要是mode和timestamp
-q:静默模式
-P PORT: 指定远程服务器的端口
2、sftp:
sftp [USER@]HOST
小技巧:
如果想基于秘钥连接linux,可以按下图进行操作:
1、
3、
4、
5、
6、
7、cat id_rsa_1024.pub >> .ssh/authorized_keys
8、
仅为个人学习整理,如有错漏,大神勿喷~~~