linux的ssh的基本使用方法。

经常登录一个服务器,不想每次都输入用户名和密码,怎么办?

1.公钥和私钥法,免密码登录。

   其实秘钥公钥法,比用用户名和密码要安全的多,基本上是不能暴力破解的,当然如果私钥被盗就玩了。

   先在自己一侧的Linux机器上产生一对公钥和秘钥。

   ssh-keygen -t rsa

   连续3次回车,就会在本用户的.ssh目录下产生一对秘钥id_rsa和id_rsa.pub,id_rsa.pub当然就是公钥。

   下面就是要将,刚才产生的公钥弄到要登录的服务器上。

    这个文件应该在服务器的什么位置呢,进入用户目录,用ls -al看到一个 .ssh 的目录,如果没有只要在服务器上用一次ssh就会产生,进入.ssh,做一个名为authorized_keys的文件,把公钥的文件内容拷贝到这个文件就可,当然还有一个很方便的命令可以完成。在客户端侧的机器上执行

    ssh-copy-id -i ~/.ssh/id_rsa.pub root@服务器IP

    这里root是要传送到服务器的用户,这个自动登录是针对用户的,一般默认是使用本用户名。

    比如客户端是用root登录的,那么

    ssh 服务器IP

     那么就是登录服务器的root账户,如果要登录其它账户在IP地址前加上用户名@,

    另外根据不同版本的机器,这种秘钥登录不一定可行。

    需要编辑/etc/ssh/sshd_config文件里  PubkeyAuthentication yes

    要重启服务哦。

    如果只想用公钥key来登录,而不允许使用密码。

    编辑/etc/ssh/sshd_config文件里  PasswordAuthentication no

    注销掉这一行没用,看来默认就是yes

2.有了自动登录,那么就可以很容易的传送文件了啦。

 scp 本地文件 远程服务器IP:远程目录

比如:

  scp text.txt 1.1.1.1:/home/shen

这样可以做进shell文件中执行,很方便的。

只能连接一台远程的Linux机,但是想要连接和它同一个网段的其它机器的服务

3.端口转送

  这个功能同样默认不开启,centos里面多个版本默认都是关闭的,毕竟还是有风险的。

  还是/etc/ssh/sshd_config这个文件,这次需要两项目,完了要重启服务哦。

  AllowTcpForwarding yes

  GatewayPorts yes

因为比较乱,设定A机为客户端,B机为A可以连接到的服务器,C机和B在一个网段,可与B通信,但不可以和A通信,当然A也不可能与C通信。

  在A机上执行

  ssh -l root -L 10000:C:23 B

   -l root当然是用户名了,如果用上面的秘钥登录就不需要输入密码了。

   -L,这里是大写的L,10000是监听本地的10000端口

    C是C机器的IP或者域名

     23是要访问C机的23端口

     B是B机器的IP或者域名

  有些地方介绍ssh -l root -L localhost:10000:C:23 B,这里其实是省略了,一般都是开启本机的端口嘛。

     这时候在A机器上在开一个窗口,执行Telnet localhost:10000就可以转发到C的23端口了。因为刚才那个ssh窗口已经登录到B机了。

那么在windows机上想要利用Linux转发端口行不行,当然是可以的。

另外不要去转发有2次连接的协议,比如ftp协议,那样很可能失败。

tera term的客户端软件

 先用ssh连接到远程,然后在该窗口的【设定】的【ssh转送】

 开了一个窗口,打开追加,本地端口,就是本地监听端口,远程主机就是远程不能直接访问的IP,端口就是该主机要访问的端口。

putty

 然后连接远程主机,那个source port是本地的监听端口,destination是远程不能直接连接的主机