ssh:Secure Shell,属于应用层协议,工作在tcp的22端口。相对于telnet,ssh通信过程及认证过程都是加密的,故更加安全。
在linux中,一般使用openssh来实现ssh
ssh的认证有口令认证和密钥认证
一、基于口令的认证
1、 客户端发起连接请求
2、 服务端发送自身公钥给客户端,由客户端决定是否接受(ssh客户端接收一个服务端的密钥 后,密钥保存在客户端当前用户的家目录下的.shh目录中的known hosts文件中)
3、 客户端生成随机数当做对称密码
4、 将随机密码用服务端公钥加密发送给服务端
二、基于密钥的认证
客户端自身产生一对密钥,之后将公钥存到服务器对应用户的家目录的.ssh/authorized_keys 或.ssh/authorized_key2中,此后,该客户端在连接时无需输入密码;为确保安全,.ssh目录的 权限应为700
ssh配置使用:
服务器端:
主配置文件:/etc/ssh/sshd_config
对该文件一些常见设置说明:
Listenaddress 0.0.0.0 #提供服务的地址(若全0表示服务器上所有的地址都 启用)
Keyregenerationinterval #客户端产生的非对称秘钥能使用的时间
Permitrootlogin #是否允许管理员直接登录
Maxauthtries #设置最多的尝试次数
Rsaauthentication #是否支持rsa认证
Pubkeyauthentication #是否支持秘钥认证
Passwordauthentication #是否支持口令认证
AllowUsers #指定允许特定用户使用ssh连接
DenyUsers #禁止特定用户使用ssh连接
当需要限制IP的登录时,可编辑/etc/hosts.deny和/etc/hosts.allow文件
设置好配置文件后,运行service sshd start即可开启ssh服务
客户端:
发起ssh连接:
ssh USERNAME@HOST
ssh -l USERNAME HOST
ssh USERNAME@HOST ‘COMMAND' #在远程主机上执行命令并返回结果后断开连 接
如不指定用户名时,会以客户端当前用户登陆远程主机
当要使用密钥认证时,连接前客户端要做的准备工作:
① ssh-keygen -t rsa #产生一对密钥,密钥默认保存在~/.ssh/目录下(私钥为 id_rsa;公钥为id_rsa.pub)
② ssh-copy-id -i ~/.ssh/id_rsa.pub '-p ?? USERNAME@HOST' #将产生的公钥复制 到服务器对应用户的家目录下(??为ssh监听的端口)
使用ssh注意事项:
1、密码应该经常换且足够复杂
2、使用非默认端口
3、禁止管理员直接登录,应先以普通用户登录,再切换到root
4、仅允许有限用户登录
5、限制客户端地址
6、使用版本2
7、使用基于密钥的认证,但应将.ssh目录权限设置为700
scp命令:
用于文件复制,基于ssh服务
用法:
从远程主机下载文件: scp USERNAME@HOST:/path/to/somefile /path/to/local
上传文件到远程主机: scp /path/to/local USERNAME@HOST:/path/to/somefile
scp还可使用许多选项,选项用法与cp相同