一、准备
ssh是现在Linux系统中,最经常使用到的远程登入服务。ssh不仅仅只是提供对远程联机数据包加密的技术,而且提供了类似于ftp与cp的功能。在开始介绍服务之前请确认在您的机器上已经安装了ssh,可以通过“rpm -qa | grep ssh”来查看(目前常用的是openssh)。我下面所做的测试均在:红旗Asianux3.0
二、启动服务及相关操作
服务器端:
[root@redflag ~]# service sshd start #启动ssh服务
客户端:
1. 远程联机
[root@redflag ~] # ssh IP/hostname 或者 ssh 用户名@IP/hostname
会出现:Are you sure you want to continue connecting (yes/no)? yes <==请输入 yes
Warning: Permanently added 'test.linux.org,192.168.0.100' (RSA) to the list of known hosts.
root@192.168.0.18's password: <==请输入root这个用户的密码!
2. sftp
在ssh服务中提供了类似于ftp的功能。
[root@redflag ~] # sftp IP/hostname 或者 sftp 用户名@IP/hostname
root@192.168.0.18's password: <==请输入root这个用户的密码
sftp> <==等待输入命令
可以采用FTP模式下的操作方法。下面来谈一下对应的命令:
变换目录 |
cd PATH |
列出目前所在目录下的文件或目录 |
ls dir |
建立/删除目录 |
mkdir/rmdir directory |
显示目前所在的目录 |
pwd |
删除文件或目录 |
rm |
将文件由本机上传到远程主机 |
put [本机目录或文件] [远程] put [本机目录或文件] 如果是这种格式,则文件会放置到目前远程主机的当前目录下 |
将文件由远程主机下载回来 |
get [远程主机目录或文件] [本机] |
? |
显示命令的作用 |
bye |
离开 |
在ssh服务中提供了类似于cp命令一样的文件复制功能,即scp。
[root@redflag ~] # scp /etc/crontab denis@192.168.0.18:/home/denis # 将数据由本机上传到远程主机上
[root@redflag ~] # scp denis@192.168.0.18:~/.bashrc . # 将数据由远程主机下载到本机上 |
1.关于server keys的记录数据:~/.ssh/known_hosts
当客户端接受来自server端的Public key之后,会比对这个Key的正确性,而对比的文件是~/.ssh/known_hosts。若是接受到的这个public key并没有被记录在该文件中,要求你回答yes/no的那个信息才会出现,而你回答yes后该public key信息就会被记录起来,以留待下次登录通一台主机是检查用。如果server key与~/.ssh/known_hosts比对成功,那么就会直接进入等待密码输入的画面,那就不必每次都得要输入(yes/no)了。之前我在测试ssh时看到
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is 6e:1a:60:d0:ee:d0:7c:91:df:94:de:09:35:7b:08:ba. Please contact your system administrator. Add correct host key in /root/.ssh/known_hosts to get rid of this message. Offending key in /root/.ssh/known_hosts:8 RSA host key for hostname has changed and you have requested strict checking. Host key verification failed.
这个错误信息在告诉你,上次登入的远程SSH主机的Key已经被改过了(可能是服务器端重新安装/更新等),所以无法继续登录。解决方法:将/.ssh/know_host中,将欲连接的主机名称的Key删除,就可以重新联机了。
[root@redflag ~] # ssh 192.168.0.18
2.ssh的配置文件
所有的SSH相关设置都放在/etc/ssh/sshd_config里。下面就介绍一下主要使用的相关内容:
Port 22 # SSH默认使用22这个port,也可以使用多个port
Protocol 2,1 # 选择SSH协议的版本,建议直接使用Protocol 2即可
ListenAddress
PermitRootLogin no # 是否允许root登录。
AuthorizedKeysFile .ssh/authorized_keys #该设置作用,若要使用不需要密码登录的账号,那么这个账号的存放文件所在文件名
DenyUsers # 不允许某个用户登录,DenyUsers test (该账号无法登录)
DenyGroups # 不允许某个群组登录;例如我们将我们不希望远程联机的多个用户可以归纳在一个组之下,并在DenyGroups后加入该组名就可以实现了。
以上只是介绍了SSH配置文件内容中的一部分。注意当你更改过配置文件之后,需要将该服务重新系统之后设置才会生效。