背景介绍
SSH相关:Secure Shell(SSH) 是由 IETF(The Internet Engineering Task Force) 制定的建立在应用层基础上的安全网络协议。它是专为远程登录会话(甚至可以用Windows远程登录Linux服务器进行文件互传)和其他网络服务提供安全性的协议,可有效弥补网络中的漏洞。
目前使用到的情形有:
- git上通过SSH进行项目的拉取与上传
- 远程访问服务器
如何设置本地电脑为服务器
通过ifconfig可以访问当前ip,下载对应的服务器协议进行安装。SSH分为客户端openssh-client和服务器 openssh-server。
如何连接远程服务器
SSH服务的默认端口是22,也就是说,如果你不设置端口的话登录请求会自动送到远程主机的22端口。我们可以使用 -p 选项来修改端口号
- ssh -l username ip/server_name
- ssh username@ip_address # 口令登录
- ssh -X username@ip_address # 调用图形界面
- ssh ip_addres # 如果客户机的用户名和服务器的用户名相同,登录时可以省略用户名
SSH的免密登录
SSH的使用条件为,服务器拥有本地公钥值,而本地拥有公钥及私钥可以对访问进行验证。免密登录的步骤有:
- 在本地终端生成密钥对,可以指定加密方式等,例如
ssh-keygen。此时会在本地的”~/.ssh”目录下生成名为id_rsa和id_rsa.pub的私钥文件和公钥文件。 - 将公钥字段复制到远程服务器,例如git的
Add SSH中以及远程服务器的”~/.ssh/authorized_keys”文件内。可以通过手动赋值或者通过ssh-copy-id user@host的形式(linux命令),windows尚未找到,仍需手动添加
SSH的免ip登录以及为当前用户配置不同的公钥(也可参考Git SSH配置文章)
直接通过ssh host_nickname即可实现登录
配置关键文件~/.ssh/config,添加以下内容:
1
2
3
4
5
6
Host server-alias # server-alias为SSH链接的服务器别名
HostName server-ip # 服务器地址
Port 22
User username # 服务器端用户名
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa # 私钥地址,默认为 ~/.ssh/id_rsa
最基础版本的设置如下,即可实现免ip和用户名登陆
1
2
3
Host Desktop
HostName __your_ip__
User __your_ip_username__
文件传输
经过上述配置,有效的简化了登录操作,会为我们节省不少时间。更重要的是,所有底层使用SSH的程序,都因此而简化了操作步骤。比如:
用于传输文件的scp和rsync命令。scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。scp 命令格式为:
1
2
3
4
# 递归传输文件
scp -r local_file remote_username@remote_ip:remote_folder
# 远程服务器文件传输到本地
scp -r remote_username@remote_ip:remote_folder local_file
如果服务器端上配置了git远程仓库,只需输入:
1
git clone server-alias:/git-repo