SSH远程登录:
1、SSH(SecureShell,安全的命令解释器)
为客户机提供安全的Shell环境,用于远程管理,默认端口:TCP 22。比较早的telnet、rsh等工具有很大优势,SSH是目前应用最为广泛的服务器远程管理方式
SSH登录使用的用户名:服务器中的本地系统用户的帐号名
SSH登录的用户验证方式
密码验证:使用服务器中系统帐号对应的密码
密钥对验证:使用客户机中生成的公钥、私钥
OpenSSH
官方站点:http://www.openssh.com
主要软件包:openssh-server、openssh-clients
服务名:sshd
服务端主程序:/usr/sbin/sshd
客户端主程序:/usr/bin/ssh
服务端配置文件:/etc/ssh/sshd_config
客户端配置文件:/etc/ssh/ssh_config
2、安装OpenSSHserver
ssh服务器端安装如下,客户端一般ubuntu系统自带,如果没有,自己安装openssh-client。
1. 使用apt命令安装opensshserver
$ sudo apt-get install openssh-server
2.确认sshserver是否安装好
$ ps -e | grep sshd
450 ? 00:00:00 sshd
如果看到sshd,说明ssh-server已经启动了。
如果只有ssh-agent,说明ssh-server还没有启动,需要执行命令启动ssh服务:
$ /etc/init.d/ssh start
3. 可以对 openssh server进行配置
3. 重启 openssh server
$ sudo service ssh restart
3、SSH服务器端配置文件:/etc/ssh/sshd_config
Port 22 监听的端口(默认22)
ListenAddress 192.168.2.1 监听的IP地址(默认监听所有IP)
PermitRootLogin no 禁止ROOT用户远程登录
PermitEmptyPasswords no 禁止密码为空的用户远程登录
LoginGraceTime 2m 限制用户登录验证过程的时间(默认为2分钟)
MaxAuthTries 6 限制用户登录验证过程的最大重试次数
DenyUsers zhangsan lisi 拒绝XX用户远程登录系统,其他均允许
AllowUsers jerry [email protected] 允许jerry在任何何IP的主机上远程登录,允许admin只能在主机61.23.24.25登录,其他均拒绝(不要同时使用AllowUsers和DenyUsers配置)
PasswordAuthentication yes 是否启用密码验证
PubkeyAuthentication yes 是否启用密钥对验证
AuthorizedKeysFile .ssh/authorized_keys 指定保存各用户公钥内容的数据文件位置,默认保存客户机用户公钥信息的文件位于(服务器某个用户宿主目录下的)
4、SSH客户端应用
使用ssh命令远程登录
方式1:ssh 用户名@服务器地址
方式2:ssh -l 用户名服务器地址
方式3:ssh 服务器地址(缺省时会尝试以当前的本地用户名进行登录)
如查SSH服务器使用非默认端口,则客户机在登录时必须时确指定端口号
ssh -p 端口用户名@服务器地址
SSH通过公钥加密的方式保持通信安全,当某一SSH客户端连接到SSH服务器时,在该客户端登录之前,服务器会向其发公钥副本。这可用于设置通信渠道的安全加密。
当用户第一次使用SSH连接到特定服务器时,SSH命令可在用户的~/.ssh/known_hosts文件中存储服务器的公钥。在此之后每当用户进行连接时,通过对此~/.ssh/known_hosts文件中的服务器条目和服务器发送的公钥,都可保证从服务器获取相同的公钥。如果公钥不匹配,客户端会假定网络传输已遭劫持,或者服务器已被入侵且中断连接。这意味着,如果服务器的公钥发生更改(由于硬盘出现故障而导致公钥丢失),用户则需要更新其~/.ssh/known_hosts文件以删除旧的输入才能够进行登录。
使用命令cat~/.ssh/known_hosts文件内容
还有一种更好的方法是,在公钥发生更改时,提前将与服务器的ssh_host_*key.pub(在/et c/ssh目录中)文件相匹配的条目添加到用户~/.ssh/known_hosts或系统范围的/etc/ssh/ssh_known_hosts中。
使用scp命令远程复制文件/目录
方式1:scp 用户名@服务器地址:源文件目标路径
方式2:scp 本地文件用户名@服务器地址:目标路径
若复制的是目录,则需添加“-r”选项
使用sftp命令从服务器下载文件
使用图形客户端软件 PuttyCN
主要用途:基于SSH协议远程登录以便管理服务器
下载地址:http://wrc.gro.clinux.org/putty/
使用图形客户端软件 WinSCP
主要用途:基于sftp、scp或ftp的方式下载/上传数据
下载地址:http://winscp.net/
在远程计算机上运行命令:
ssh命令可用于在远程计算机上打shell并在该计算机上运行命令,有时,还可以保存在远程计算机上运行的命令输出,无论是保存在远程计算机,还是本地计算机上。
输出重定向至本地文件:
ssh user@host ‘command1 ; command2’ >log.local //单引号
输出重定向至远程文件:
ssh user@host ‘command1 ; command2 >log.remote’ //单引号
5、构建密钥对验证的SSH登录体系
基本实现步骤
1.在客户机创建密钥对
ssh-keygen命令:ssh-keygen -t rsa 或ssh-keygen -t dsa 创建证书
2.将公钥文件上传至服务器
在/home/用户/下建立.ssh文件夹,并将其权限设置为700
方法:使用普通用户登录SSH服务器,创建.ssh目录,或使用ROOT用户创建.ssh目录,并更改属主和属组为该普通用户
把公匙传到SSH服务器主机的/home/用户名/.ssh中并命名为authorized_keys
可以使用scp命令或ssh-copy-id -i .ssh/id_rsa.pub 用户名@SSH服务器
id_rsa_pub文件可以一对多
3.设置服务器
禁用密码验证、启用密钥对验证,并重启sshd服务。
6、限制ssh登录用户
禁止人家使用ssh端口登录就行了,具体方法:
sudo vi /etc/ssh/sshd_config
查找 AllowUsers ,如果没有则加上。
AllowUsers meiking root
上面表达的意思就是只允许meiking和root用户远程登录