一、准备

    ssh是现在Linux系统中,最经常使用到的远程登入服务。ssh不仅仅只是提供对远程联机数据包加密的技术,而且提供了类似于ftpcp的功能。在开始介绍服务之前请确认在您的机器上已经安装了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 [远程主机目录或文件] [本机
get [
远程主机目录或文件
若是这种格式,则文件会放在目前本机所在的目录当中!可以使用通配符,例如: 
get * 
get *.rpm 
也是可以的格式

显示命令的作用

bye

离开

  scp
  
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时看到

           [root@redflag ~] # ssh 192.168.0.18 

  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 

  @    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删除,就可以重新联机了。

2.ssh的配置文件

    所有的SSH相关设置都放在/etc/ssh/sshd_config里。下面就介绍一下主要使用的相关内容:

    Port 22      # SSH默认使用22这个port,也可以使用多个port

    Protocol 2,1  # 选择SSH协议的版本,建议直接使用Protocol 2即可

    ListenAddress 0.0.0.0  # 监听的主机适配卡。例如ListenAddress 192.168.0.100那么只能该IP联机。如果不设置的话,则默认所有接口都接受SSH

    PermitRootLogin  no   # 是否允许root登录。

    AuthorizedKeysFile    .ssh/authorized_keys  #该设置作用,若要使用不需要密码登录的账号,那么这个账号的存放文件所在文件名

    DenyUsers  # 不允许某个用户登录,DenyUsers test (该账号无法登录)

    DenyGroups  # 不允许某个群组登录;例如我们将我们不希望远程联机的多个用户可以归纳在一个组之下,并在DenyGroups后加入该组名就可以实现了。


       以上只是介绍了SSH配置文件内容中的一部分。注意当你更改过配置文件之后,需要将该服务重新系统之后设置才会生效。