Linux基礎:ssh與scp

江水為竭發表於2023-01-03

登陸

  • 登陸伺服器

  • ssh user@hostname

    • user: 使用者名稱
    • hostname :IP地址或域名
  • 第一次登陸會提示

    • The authenticity of host '123.57.47.211 (123.57.47.211)' can't be established.
      ECDSA key fingerprint is SHA256:iy237yysfCe013/l+kpDGfEG9xxHxm0dnxnAbJTPpG8.
      Are you sure you want to continue connecting (yes/no/[fingerprint])?

  • 輸入yes ,回車即可。這樣伺服器的資訊會記錄在~/.ssh/known_hosts中。

  • 退出登陸:CTRL + D,或者手動輸入 exit

配置檔案

  • 為方便登陸伺服器,給伺服器取別名。

  • 建立資料夾:~$ mkdir .ssh

  • 建立檔案vim config

  • 輸入

    • Host myserver1
          HostName IP地址或域名
          User 使用者名稱
      
      Host myserver2
          HostName IP地址或域名
          User 使用者名稱
      
  • 則可使用別名myserver1myserver2

免密登入

  • 輸入命令ssh-keygen,回車跳過詢問。
  • 這樣, ~/.ssh 中會有檔案
    • id_rsa : 私鑰
    • id_rsa.pub : 公鑰
  • 如果想要免密登入某個伺服器,就要將公鑰傳給它。
    • 將公鑰中的文段複製,進入伺服器中。
    • 貼上到~/.ssh/authorized_keys。(若沒有,則建立)
  • 也可以這條命令一鍵新增:ssh-copy-id myserver

執行命令

  • 命令格式ssh user@hostname command

  • 例如:

    • ssh user@hostname ls -a ,將伺服器家目錄下所有資料夾列印出。

    • a=1
      ssh myserver  "echo $a"
      ssh myserver  'echo $a'
      
    • 雙引號是在本地伺服器進行轉義,所以傳過去的命令不是echo $a,而是echo 1單引號傳過去的是echo $a

SCP

  • 功能:本地與伺服器之間傳檔案,伺服器與伺服器之間傳送需要許可權完整,可以讓本地終端成為媒介。
  • source路徑下的檔案複製到destination
    • scp source destination
  • 複製多個檔案
    • scp source1 source2 destination
  • 複製資料夾
    • 將本地家目錄中的tmp資料夾複製到myserver伺服器中的~/homework/目錄下。
    • scp -r ~/tmp myserver:homework/
  • 指定埠號
    • scp -P 22 source1 source2 destination
  • 傳輸作業
    • 在作業資料夾的目錄下,如~/CSAPP/homework1
    • 命令scp -P 22 * user@hostname:~/homework1

相關文章