[TOC] #### 1. mac 的 ssh --- mac 的终端自带 ssh,不过我会使用 [iterm2](https://iterm2.com) 作为 mac 终端工具 ``` ssh 服务器用户@服务器IP地址 ``` 输入连接命令,回车,再输入连接命令中使用的用户密码即可连接上服务器。下面是连接命令: ``` # 默认使用 22 端口连接服务器 ssh root@182.92.187.217 # 使用 -p 参数指定端口连接服务器 ssh root@182.92.187.217 -p 23 ``` 当曾经连接过远程服务器,后来服务器重装系统了(如:阿里云服务器更换了操作系统),再连接就会出现以下错误  解决方案 1:直接删除 known_hosts 文件 ```bash rm -rf ~/.ssh/known_hosts ``` 解决方案 2:删除 known_hosts 中该 IP 相关内容 因为该文件中可能会有其他 IP 的内容,为了不影响其他 IP 的连接,所以推荐该方式 ``` # 删除以下内容 47.106.206.43 ssh-ed25519 .... 47.106.206.43 ssh-rsa .... 47.106.206.43 ecdsa-sha2-nistp256 .... ``` #### 2. 使用 SSH 密钥连接 --- 当经常需要连接一个服务器时,每次连接都输入密码就过于繁琐了,我们可以使用 SSH 密钥进行免密登录 生成 SSH 密钥(使用 github 的开发者一般都生成过,生成过的话无需重复生成) ``` ssh-keygen ``` 运行以下命令将 SSH 密钥推送到服务器,推送时需要输入服务器用户密码 ssh-copy-id 可以把本地主机的公钥复制到远程主机的 authorized_keys 文件,进而实现免密登录 这个命令会在服务器上生成一个文件: `~/.ssh/authorized_keys`,文件内容就是我们推送的 SSH 密钥 ```bash # 命令格式 ssh-copy-id 用户@IP地址 # 使用示例 ssh-copy-id root@192.168.1.49 ssh-copy-id root@101.132.33.24 ``` 再使用 ssh 连接服务器就可以免密连接了  #### 3. 使用配置文件连接 --- 使用 SSH 密钥连接的方式,虽然不用每次都输入密码,但还是要输入服务器的用户名和 IP 地址,还是挺麻烦的。 这时候可以给 IP 配置一个别名,进而简化连接操作,创建文件: `~/.ssh/config`,文件内容如下: ``` Host blog Hostname 101.132.33.24 Port 22 User root IdentityFile ~/.ssh/id_rsa ``` 使用配置的别名连接服务器,只需要使用以下指令就可以连接到服务器 ``` ssh blog ```  当需要连接多个服务器时,考虑到每个都要写 Port、User,很麻烦,其实可以把这些公共的抽离出来 ``` Host blog Hostname 101.132.33.24 # 以下为抽离的配置 # Host * :这个的意思是,所有Host以下如果没有配置的话,都走以下配置 # Port : 默认端口为22,如果不是22端口,可以在上面输入 Port 2222 ,自己想要的端口进行配置 # IdentityFile : 默认的我们的密钥文件地址位置在哪儿(也就是我们先开始生成密钥的地址) Host * Port 22 User root ServerAliveInterval 60 ConnectTimeout 0 TCPKeepAlive yes IdentityFile ~/.ssh/id_rsa ``` #### 4. Windows 系统 --- 对于 Windows 系统用户,如果只是连接服务器的终端,进行简单操作,比如: 安装宝塔面板,可以使用 git 自带的命令行工具 `Git Bash Here` 连接。但如果想要更多功能,还是要使用专业的软件,如 xshell ``` ssh root@182.92.70.132 ``` 首次连接会有一个操作提示,输入 `yes` 回车即可,然后输入服务器用户的密码即可连接成功  #### 5. 退出 SSH 连接状态 --- 退出 SSH 连接可以使用 `exit` 命令,也可以使用快捷键 `control + d` 