ssh 的使用技巧
本文最后更新于 835 天前,其中的信息可能已经有所发展或是发生改变。

ssh & scp 介绍

个人平时的工作,除了本地还涉及多台 Linux 服务器,要从终端登录到各个服务器,操控服务器的终端

ssh 是登录的工具,包含免密登录等功能

scp (server copy)本地和服务器间传文件的途径


ssh 登录

基本用法(远程服务器)
ssh user@hostname # 服务器用户名 @ IP 或 域名

首次登录陌生服务器有安全提示,允许

登录后,该服务器信息会记录在本地 ~/.ssh/known_hosts

# 指定端口: -p 端口号(不写默认22)
ssh user@hostname -p 22
  • 云服务器默认 root 用户,用 adduser 添加非 root 用户并设置密码。之后用新用户名登录

如果上来就显示 Permission denied (publickey),就直接把公钥复制到服务器authorized_keys

配置文件(一般都要做)

创建 ~/.ssh/config

  • 格式
Host server1
    HostName 后面写IP地址或域名
    User 后面写用户名

Host Lunar
    HostName IP地址或域名
    User 用户名

Host 后的名字可以代替 user@hostname

密钥登录(免密登录)
# 创建密钥(一般只需要一次)
ssh-keygen

之后 ~/.ssh/ 会多两个文件:

  • id_rsa :私钥
  • id_rsa.pub :公钥

将公钥传给要免密登录的服务器(服务器上的公钥与本地私钥配套)

  • 云服务器,则存入服务器的 ~/.ssh/authorized_keys (没有就新建)
  • github 等网站以及部分 IDE,填入公钥本质还是连接和验证

推荐以下省流操作 ↓↓↓

# 一键配置
ssh-copy-id Lunar
执行命令

在本地执行服务器上的命令,方便灵活。如果有 stdout ,服务端输出的同时,会重定向回终端

# 简单的例子
ssh user@hostname ls -a

或者

#单引号中的$i可以避免在本地求值,将字符串里的内容传到服务器后,在服务器上求值
ssh Lunar 'for ((i = 0; i < 10; i ++ )) do echo $i; done'
#双引号中的$i会在本地求值再传到服务器,用\$可以在本地当转义字符处理,到服务器上再求值
ssh Lunar "for ((i = 0; i < 10; i ++ )) do echo \$i; done"

scp 传文件

基本用法
scp 文件 目的地
# 如果有重名文件,直接覆盖
# 复制多个文件
scp 文件1 文件2 目的地
# 复制目录 前面加 -r
scp -r ~/tmp Lunar:/home/MCG/   # /开头的完整路径
# 从本地复制到服务器

scp -r Lunar:homework .     # 非/开头的路径,则默认为服务器的~/
# 从服务器复制到本地
# 前面 -P(大写) 指定端口
scp -P 22 文件1 文件2 目的地
实用案例

快速同步各端 vim 和 tmux 配置(其他配置文件也一样)

scp ~/.vimrc ~/.tmux.conf Lunar:

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
下一篇