telnet :远程登陆 TCP/23
远程认证是明文的 ;数据传输是明文的;不实用
ssh:Secure SHell TCP/22 协议 v1 v2 v1基本不使用的 实现了将认证过程加密
Openssh:是ssh的开源版 ssh不仅是一个软件,也是一种协议
ssh加密认证的机制
基于口令:默认为口令
基于密钥:事先在服务器端的用户里放入客户端的公钥,然后链接过来的时候对暗号
netstat -tnl 查看服务器端打开了等待别人访问的服务 LISTEN监听
ssh 和sshd的配置文件都在
/etc/ssh/ssh_config 客户端的配置文件
/etc/sshd_config 服务器端的配置文件
vim sshd_config #后面有空格是注释,没空格是选项;去掉#就是启用,加上#就是关闭
例如:里面可以修改服务器端口号
例如:ListenAddress 192.168.9.112 只在112这台机器上提供服务
例如:PermitRootLogin no 不允许管理员直接登陆
例如:MaxAuthTries 6 输入错误密码超过6次,会提示等一会儿再输入
例如:AuthorizedKeyFile .ssh/authorized_keys 把客户端生成的公钥放在这个目录下面,就可以实现基于密钥加密认证
最后要service sshd restart /reload
客户端应用:
ssh :ssh -l root@172.16.0.1 ‘ifconfig’不登陆该主机,只返回命令执行结果
基于密钥认证怎样来实现:
一台主机为客户端 (基于某个用户实现)
1、生成一对密钥
ssh-keygen -t指定加密算法 rsa 或者dsa
2、将公钥传输至服务器端某用户的家目录下的.ssh/authorized_keys文件中
使用文件传输工具,将公钥传输过去用 ssh-copy-id或者scp
3、测试登陆
scp:基于ssh的远程复制命令,可以实现在主机之间传输数据
-r 复制目录需要用-r递归
例:把远程的文件复制到本地当前目录下:站在1上
scp root@192.168.9.1:/etc/fstab ./
例:把本地文件复制到远程主机上去:站在1上
scp fstab root@192.168.9.2:/root
实验:两台主机间基于密钥认证
1、rm -rf .ssh/* 9.1删除原有密钥文件
2、ssh-keygen -t rsa -f .ssh/id_rsa 生成密钥文件保存在/ssh下面叫id_rsa
3、连输入两次密码 自动生成一对密码
在第二步后面加-N ‘可以指定密码’
4、将自己的公钥传输到另一台主机的.ssh/id_rsa
方法一:ssh-copy-id -i .ssh/id_rsa.pub root@192.168.9.2 他能自动追加到9.2的.ssh/authorized_keys的尾部
下次链接9.2的时候 自动登陆
方法二:scp 先复制过去 然后追加>>到.ssh/authorized_keys的尾部
还可以配置双机互信
sftp:既是客户端又是服务器端
实例:从9.2下载文件到9.1
1、sftp root@192.168.9.2
2、get下载一个文件到本地 mget下载多个文件到本地
服务器安全总结:
经常换密码
使用非默认端口
限制登陆客户端地址
禁止管理员直接登陆
仅允许有限用户登录
使用基于密钥的认证
不要使用协议版本1
ssh 192.168.9.1 8092