国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

ssh免密登錄服務器和scp的使用

Jochen / 1969人閱讀

摘要:原理遠程主機收到用戶的登錄請求,把自己的公鑰發給用戶。也就是說,要實現免密碼登入,首先要設置鑰匙。把公鑰放到遠程服務器比如我的基本都安裝了,萬一沒有,上。

TL;DR

本地登錄服務器 ssh user@remote -p port,端口是22的話ssh user@remote,退出登錄exit

本地免密碼登錄 ssh-copy-id user@remote -p port,這在寫腳本服務器控制時特別有用

給服務器配置別名 code ~/.ssh/config追加一些內容,就可以ssh selfname登錄,不再需要記服務器ip地址了

執行命令ssh selfname "cd ~;ls",將會在服務器上執行引號里的命令,執行之后其自動關閉遠程服務

將a電腦文件(夾)復制到b電腦上哪個文件夾下面:scp username@a電腦ip:文件路徑 username@b電腦ip:文件夾路徑,是文件夾的話加上-r,這里也可以用別名,通常本機的話省略username@a電腦ip:

大段引用ssh的基本加高級用法

基礎

SSH是一種網絡協議,用于計算機之間的加密登錄。原理:

遠程主機收到用戶的登錄請求,把自己的公鑰發給用戶。

用戶使用這個公鑰,將登錄密碼加密后,發送回來。

遠程主機用自己的私鑰,解密登錄密碼,如果密碼正確,就同意用戶登錄。

當遠程主機的公鑰被接受以后,它就會被保存在本地文件~/.ssh/known_hosts之中,此外系統也有一個這樣的文件,通常是/etc/ssh/ssh_known_hosts,保存一些對所有用戶都可信賴的遠程主機的公鑰。

基本命令:

ssh user@remote -p port

# user 是你在遠程機器上的用戶名,如果不指定的話默認為當前用戶
# remote 是遠程機器的地址,可以是 IP,域名,或者是后面會提到的別名
# port 是 SSH Server 監聽的端口,如果不指定的話就為默認值 22
# 比如我常用的 ssh zhm@120.79.52.223

通常在本地電腦輸入以上命令之后,遠程服務器就會詢問密碼,你輸入的時候是看不見任何波動,輸入完回車就可以了~,如果報錯ssh: connect to host remote port 22: Connection refused,說明服務器沒有按照ssh server,Ubantu Desktop系統默認是沒有這個的,安裝命令sudo apt-get install openssh-server

免密碼登錄

每次 ssh 都要輸入密碼是不是很煩呢?與密碼驗證相對的,是公鑰驗證。也就是說,要實現免密碼登入,首先要設置 SSH 鑰匙。也就是本地電腦生成公鑰私鑰,然后把公鑰放在遠程服務器上就可以了! 原理很簡單,就是用戶將自己的公鑰儲存在遠程主機上。登錄的時候,遠程主機會向用戶發送一段隨機字符串,用戶用自己的私鑰加密后,再發回來。遠程主機用事先儲存的公鑰進行解密,如果成功,就證明用戶是可信的,直接允許登錄shell,不再要求密碼。

# 查看本地有沒有
ls ~/.ssh
# 沒有就生成
ssh-keygen
# 在~/.ssh/目錄下,會新生成兩個文件:id_rsa.pub和id_rsa。前者是你的公鑰,后者是你的私鑰。
# 把公鑰放到遠程服務器
ssh-copy-id user@remote -p port
# 比如我的 ssh-copy-id zhm@120.79.52.223

ssh-copy-id基本都安裝了,萬一沒有,mac上brew install ssh-copy-id。 windows麻煩點ssh user@remote -p port "mkdir -p .ssh && cat >> .ssh/authorized_keys" < ~/.ssh/id_rsa.pub,意思是在遠端執行新建 .ssh 文件夾,并把本地的 ~/.ssh/id_rsa.pub (也就是公鑰)追加到遠端的 .ssh/authorized_keys 中。當然,不使用這條命令的話,你也可以手動操作這個過程,即先復制公鑰,再登入遠程機器,粘貼到 .ssh/authorized_keys 當中。

配置別名

每次都輸入 ssh user@remote -p port,時間久了也會覺得很麻煩,特別是當 user, remote 和 port 都得輸入,而且還不好記憶的時候。配置別名可以讓我們進一步偷懶。比如我想用ssh lab替換上面一串

# cat>>某文件<> 追加的意思 <
# 因為是前端,直接用vscode編輯
code ~/.ssh/config
# 追加以下內容,保存
Host lab
    HostName remote
    User user
    Port port

# 來登錄吧
ssh lab

# 比如我的
# Host han
    # HostName 120.79.52.223
    # User zhm
    # Port 22
# ssh han
命令行執行登錄并且在目標服務器上執行命令

命令行執行登錄并且在目標服務器上執行命令:

# 單引號或者雙引號,將命令包起來,然后分號隔開命令
ssh user@remoteNode "cd /home ; ls"

如果是很多命令的話,需要建一個腳本。

# 建一個腳本文件test.sh,里面寫上這個,然后執行 sh test.sh
#!/bin/bash  
# 遠程執行的內容在"< < remotessh " 至" remotessh "之間,如果不想本機出現日志的話 ssh user@remoteNode >/dev/null 2>&1   << remotessh
ssh user@remoteNode << remotessh
ls
exit
remotessh

啊,寫腳本就容易了,有木有!

傳輸文件

兩臺機器間文件傳輸可以用scp,它的地址格式與 ssh 基本相同,都是可以省略用戶名和端口,稍微的差別在與指定端口時用的是大寫的 -P 而不是小寫的。不過,如果你已經配置了別名,那么這都不重要,因為 scp 也支持直接用別名

# 總的:本機的可以省略電腦的ip,默認的遠程當前文件夾是 Home目錄(~),將A電腦上的文件復制到B電腦上
# 注意的地方:A若是文件,B電腦若也是文件的路徑,不管文件存不存在,都會將A文件內容寫入到B這個文件。
#                    B電腦若是文件夾,不管文件夾存不存在,都會在這個文件夾下生成A電腦同名的文件和內容,有的話則會覆蓋同名文件
# A若是文件夾,加上-r,B電腦若是文件的路徑會報錯,B電腦若是文件夾路徑,文件夾不存在的話則會建立這個文件夾且放入A文件夾里面的內容(相當于將A文件夾挪過去然后重命名),文件夾存在的話,會在這個文件夾下面生成一個和A同名的文件夾,里面內容一致
scp A電腦:文件路徑 B電腦:文件路徑

# 把本地的 /path/to/local/file 文件傳輸到遠程的 /path/to/remote/file  
scp -P port /path/to/local/file user@remote:/path/to/remote/file

# 也可以使用別名
scp /path/to/local/file lab:/path/to/remote/file

# 把遠程的 /path/to/remote/file 下載到本地的 /path/to/local/file
scp lab:/path/to/remote/file /path/to/local/file

# 遠程的默認路徑是家目錄
# 下面命令把當前目錄下的 file 傳到遠程的 ~/dir/file
scp file lab:dir/file

# 加上 -r 命令可以傳送文件夾
# 下面命令可以把當前目錄下的 dir 文件夾傳到遠程的家目錄下
scp -r dir lab:

# 別忘了 . 可以用來指代當前目錄
# 下面命令可以把遠程的 ~/dir 目錄下載到當前目錄里面
scp -r lab:dir/ .

如果覺得使用命令行傳輸文件渾身不自在,你還可以使用 SFTP 協議。任何支持 SFTP 協議的客戶端都能用你的 SSH 賬號信息登入并管理文件,比如開源的有圖形化界面的FTP客戶端 FileZilla。別忘了,在這些客戶端里面,你也可以指定你的私鑰(~/.ssh/id_rsa),然后就能做到無密碼登入了。

保持程序在后臺運行

以下命令均在服務器執行

nohup
# 讓程序在后臺運行 比如 nohup node index.js &
nohup 一直執行的命令 &
# 看下任務號 node的那個
ps
# 如果需要終止的話
kill 21455
tmux

tmux更能執行復雜的程序,tmux還能管理多個窗口,窗口切分,復制粘貼等等,mac用戶使用tmux更方便,新建會話tmux -CC,恢復的時候tmux -CC attach

# 服務器上安裝tmux
sudo apt-get install tmux

# 運行tmux,進入會話,此時運行任何東西都不會因為退出ssh而被殺死
tmux

# 暫時離開會話 ctrl+b 再按下d

# 恢復會話
# tmux attach

# tmux命令必須運行在服務器上

阮一峰大神的ssh介紹
ssh的基本加高級用法
linux中的shell用ssh自動登錄遠程服務器后執行命令并自動
ssh轉發

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/6825.html

相關文章

發表評論

0條評論

Jochen

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<