SSH使用

SSH是远程操作linux的必备,也是非常有用的基础工具。连接到远程linux机器的基本操作:

ssh 用户名@机器ip #输入密码之前可能需要输入yes保存RSA key,再输入密码即可

1. 免密码登录

通过公私密钥可以实现免密码登录操作。假设有2台机器,客户端A和服务器B,要实现客户端无需密码登录服务器B。操作步骤:

  1. 客户端操作
cd ~ # 进入HOME目录
ssh-keygen # 一路按回车即可,最终产生公私密钥,即客户端~/.ssh文件夹下''id_rsa''和''id_rsa.pub''两个文件。

文件id_rsa.pub的内容就是公钥,要把这个文件的内容添加到服务器上,见操作2.

  1. 服务器端操作
cd ~/.ssh/ # 如果.ssh文件不存在,则mkdir .ssh创建一个,但要特别注意,权限必须设置为600
vim authorized_keys # 如果文件authorized_keys不存在,则touch authorized_keys创建一个,然后编辑这个文件,增加一行,把客户端的id_rsa.pub的全部文件内容贴进去
chmod 600 authorized_keys # 必须设置权限
  1. 客户器端操作
ssh root@192.168.56.102 # 无需输入密码直接登录
ssh 192.168.56.102 # 如果省略用户名,则使用当前登录的用户名

2. scp传输文件

scp是cp的扩展,它除了支持本地文件複製,也支持远程文件複製:

scp <本地文件或远程路径> <本地文件或远程路径>
# 远程路径 = 用户名@IP地址:文件路径
scp ~/hi.txt root@192.168.56.102:/root # 将本地文件传至远程
scp root@192.168.56.102:~/hi.txt ~/hi2.txt # 将远程文件複製至本地文件系统
scp root@192.168.56.102:~/hi.txt root@192.168.56.102:~/hi3.txt # 机器间複製文件

3. screen保持ssh回话

安装screen,以centos为例:yum install screen

当我们进行重要的ssh操作时,例如安装软件,如果遇到网络不顺畅时可能导致ssh断开,此时当前运行的命令将被强制终止掉,如果要避免这个问题,可以使用screen工具。

screen -S screen_name # 新建名为screen_name的session
screen -ls # 列出所有session
screen -r screen_name # 回到screen_name这个session
screen -d screen_name # 远程detach某个session

screen -x screen_name # 如果detach失败了,可以试试-x这个配置

当使用su - 用户名切换到另外一个用户下,再用screen时,就会出现Cannot open your terminal '/dev/pts/1'错误,此时执行:

script /dev/null

原理见这篇文章

4. SSH端口转发(forwarding)

SSH可以很方便的把另一台机器,假设IP地址为a.b.c.d的端口X映射到本机的Y端口,在本机执行命令:

ssh -R Y:a.b.c.d:X 127.0.0.1 -o ServerAliveInterval=60 -b 0.0.0.0 -fN #需要输入本机的当前用户密码

说明一下:上面的-b 0.0.0.0是为了让Y端口绑定在0.0.0.0上,这样外网机器就可以访问。为了做到这一点,还需要把/etc/ssh/sshd_config(服务器端)和/etc/ssh/ssh_config(客户端)配置里面的GatewayPorts yes设置上,并重启sshd。而-fN则是让命令在后台运行。

实际上,这个命令不仅可以绑定到本机的某个端口上,只要把127.0.0.1换成是另外一台能访问的ip,就可以将Y端口绑定到另外一台机器上,当然要能登录上那台机器。

5. windows下使用ssh

windows对ssh的支持并不好,默认没有带ssh。如果要使用的话推荐用msysgit,github出品。

生成公钥登录服务器

进入Git Bash,执行ssh-keygen,一路回车完成。然后将C:\Users\用户名\.ssh\id_rsa.pub里面的内容追加到服务器上的~/.ssh/authorized_keys文件中(如果不存在则创建,并设置权限为600)。

然后试一下ssh username@abc.com能否免密码登录。

可视化客户端

推荐使用免费的软件:Smartty,它有提供portable版,目前版本3.1。官方网站。它有两种模式,Smart Terminal和Normal Terminal,日常使用Normal Terminal就可以了,如果也要使用sftp上传下载服务器文件,就使用Smart Terminal模式。

常用配置:

  1. Common Settings-When the mouse wheel is scrolled,选择Scroll terminal contents
  2. Visual Settings-Horizontal scroll bar visilibity,选择Always hidden
  3. Visual Settings-Page header position,选择Top
  4. Visual Settings-Terminal font,选择Consolas 15号字
  5. Smart Terminal Settings-Default Terminal Type,选择Normal Terminal

推荐使用SecureCRT,它是收费软件,有破解版,非常好用,Tencent的跳板机也是用这款。

关于按Delete键显示^H的问题:打开配置窗口,在终端-仿真-映射键配置,勾选上Backspace发送Delete即可。

文档更新时间: 2018-11-10 20:27   作者:nick