一。回顧#
1.1 ssh#
ssh
secure shell
- リモートログイン接続、ホストを制御
- データの転送はすべて暗号化されている
- 非対称暗号技術に基づいている
1.2 暗号技術#
暗号技術
対称暗号
-
双方が共通の鍵を持ち、一方が暗号化し、もう一方が復号化する
-
欠点:この公開鍵の鍵は容易に悪意のある人に取得される可能性がある
非対称暗号
- 公開鍵を使用して暗号化と復号化を行う
- 鍵のペアを生成し、一方が秘密鍵、もう一方が公開鍵となる
- 秘密鍵は自分だけが知っており、ローカルに保存される
- 公開鍵は通信が必要な人に渡され、他の人にも公開できる
- 公開鍵で暗号化し、秘密鍵で復号化する。一般的にデータの暗号化転送に使用される
(A、B の 2 人、B が A に暗号化された方法でデータを送信し、秘密鍵は A の手元にあり、B は A の公開鍵でデータを暗号化する) - 秘密鍵で暗号化し、公開鍵で復号化する。一般的に認証に使用される
(A が B にデータを送信し、B はそれが A から送信されたデータであるかを確認する。クライアント A は A の秘密鍵でデータを暗号化し、サーバー B は A の公開鍵で復号化する。認証のみを行い、暗号性は考慮しない)
1.3 ssh ログイン#
ssh ログイン
ログイン方法
- パスワードログイン
手順
1、クライアントがログインリクエストを送信
2、サーバーがマシンの公開鍵をクライアントに送信
3、クライアントはサーバーの公開鍵でパスワードを暗号化し、サーバーに送信
4、サーバーは暗号文を受け取った後、秘密鍵で復号化し、/etc/shadow と照合
5、認証結果を返す - 鍵ログイン、公開鍵認証
1、クライアントが公開鍵ペアを生成
2、クライアントのユーザー公開鍵をサーバーに送信し、対象ユーザーの~/.ssh/authorized_keys に保存
3、クライアントがリクエストを送信し、サーバーが 1 つのランダム文字列を返す
4、クライアントはランダム文字列を受け取った後、自分の秘密鍵で暗号化し、サーバーに送信
5、サーバーは暗号文を受け取った後、クライアントの公開鍵で復号化し、ランダム文字列と生成された文字列を比較する。認証結果を返す(ランダム文字列は他の人が取得しても問題ない。A の公開鍵は多くの人が持つことができる) - 欠点
- 第三者攻撃
- A は受け取ったこの公開鍵が B のものであるかどうかを判断できない
- この問題を解決するために
- 初回ログイン時に人為的確認を行う
- 確認後、B マシンのホスト公開鍵を~/.ssh/known_hosts に保存し、以降のログイン時に比較を行う(システム再インストール後にログインできない場合、known_hosts の削除を促す)
公開鍵認証
1、コマンドを使用して公開鍵ペアを生成
ssh-keygen
-t オプションで生成する暗号アルゴリズムを指定
デフォルトは rsa アルゴリズムで暗号化され、プロセス中はずっとエンターを押すだけでよい
2、クライアントが公開鍵をサーバーに送信
対象ユーザーの~/.ssh/authorized_keys に保存
3、権限を確認
authorized_keys 600 権限
.ssh およびホームディレクトリは 755 以下の権限を設定
または、パスワード認証ログインを許可する場合(前提条件) # ssh-copy-id wy@192.168.0.39 -p 2233 公開鍵を送信
[root@cPen_python ~]# ssh-copy-id wy@192.168.0.39 -p 2233 # 注:パスワードログインをサポートする必要がある
1.4 ssh リモート操作ツール#
ssh リモート操作ツール
- ssh
- リモートコマンド実行、リモートログイン
- ログイン方法
- ssh サーバーの IP アドレス
- 現在のユーザーとデフォルトポートでログイン
- クライアントの現在のユーザー名で、リモートサーバーの同名ユーザーにログイン、デフォルトポート 22
(同名ユーザーがいない場合、ログイン失敗)- ssh ユーザー名 @サーバーの IP アドレス
- リモートサーバーの指定ユーザーにログイン、デフォルトポート 22 でログイン
- ssh サーバーのアドレス -l ユーザー名 -p ポート番号
- 指定したユーザー名とポートでログイン
- ssh -o 一部の設定オプションを指定 サーバーの IP アドレス
# yes を無秩序に入力し、hostkey を自動保存
ssh -o StrictHostKeyChecking=no 192.168.0.132 -p 223- ssh -i /tmp/id_rsa 指定した秘密鍵認証ファイル
デフォルトでは~/.ssh の下で秘密鍵を探す- ssh -vvv
ログインプロセスの詳細情報を表示
1.5 サービス設定#
サービス設定
- サービスインストールパッケージ
-
oepnssh#
[root@cPen_python ~]# which ssh
/usr/bin/ssh
[root@cPen_python ~]# rpm -qf /usr/bin/ssh
openssh-clients-7.4p1-21.el7.x86_64
-
- 設定ファイル
- /etc/ssh/sshd_config サーバー側の設定ファイル
- /etc/ssh/ssh_config クライアント側の設定
- メインプログラム
サーバー側 /usr/sbin/sshd
クライアント側 /usr/bin/ssh - 設定を再読み込み
サービスを再起動 service sshd restart/reload
kill -1 sshd の pid
kill -HUP sshd の pid 号
1.6 ssh サービスの起動状況を確認#
ssh サービスの起動状況を確認
1、ps -aux/-ef
2、pidof sshd
3、netstat -autpln すべてのインターフェース (a) の udp tcp 接続、すべてのプログラム (p) のリスニング状態 (l) を表示し、ポート番号を数字で表示
# 注:ネットワーク接続状態を確認
# ps -eo pid,uid,comm|grep sshd # 注:-eo 特定のフィールド情報を確認
4、lsof -i:22 プログラムが必要とするファイルを表示
[root@localhost ~]# ps aux |grep sshd
root 1066 0.0 0.1 112924 4316 ? Ss 09:41 0:00 /usr/sbin/sshd -D
root 1608 0.0 0.1 158928 5608 ? Ss 09:43 0:00 sshd: root@pts/0
root 9546 0.0 0.0 112824 980 pts/0 S+ 11:26 0:00 grep --color=auto sshd
[root@localhost ~]# ps -ef |grep sshd
root 1066 1 0 09:41 ? 00:00:00 /usr/sbin/sshd -D
root 1608 1066 0 09:43 ? 00:00:00 sshd: root@pts/0
root 9550 1612 0 11:26 pts/0 00:00:00 grep --color=auto sshd
[root@localhost ~]# ps -eo pid,uid,comm|grep sshd # 注:-eo特定のフィールド情報を確認
1066 0 sshd
1608 0 sshd
1.7 ssh-agent#
ssh-agent
鍵を管理する
自分のマシンでこのサービスを開始する
設定: xshell--> ホストプロパティ --》ssh --》xagent による認証を使用するにチェック;プロキシ転送を使用するにチェック
#注:自分のマシンは Windows で、Windows 上で ssh-agent サービスを開始する。現在 A、B の 2 台のマシンがあり、A、B の両方のマシンには Windows の公開鍵がある。この場合、ssh-agent(xshell 内で開始)を有効にすると、A が B にログインする際、デフォルトでは Windows の公開鍵を使用して暗号化し、B マシンは Windows の秘密鍵で復号化する。xshell 内で操作する必要がある。これはすべて xshell の動作である。
二。ジャンプホスト#
#注:ジャンプホストはオフィスの人員用で、ジャンプホスト / バリケードホストはシステムの安全を保護するために使用される
#注:ssh-agent を使用してジャンプホストとアクセスしたいホストにアクセスする
#注:使用シーン アリババのビジネス 本来は 10 万台のホストがある(LAN 内にあり、外部からアクセスできない)。私は自宅にいて、10 万台のマシンから 1 台を選び、この 1 台のホストが外部ネットワークにアクセスできる(ジャンプホスト / バリケードホスト)。この 1 台のジャンプホストの設定は特に重要である
ssh-agent を有効にし、自分のホストの公開鍵をターゲットホストとバリケードホストに追加する(ターゲットホストの権限とバリケードホストの権限)
#注:A に接続し、A から B にジャンプする場合、B には現在のホストの公開鍵と秘密鍵がない場合がある
#ジャンプホストのセキュリティ強化:
root で直接ログインできない、sudo で適切な権限を付与する
デフォルトポートでログインできない
パスワードログインを使用できず、すべて公開鍵ログインを使用する
ファイアウォール設定を追加する
まとめ:
#ジャンプホスト
#セキュリティ強化
1、パスワードログインを使用できない
2、root ログインを使用できない
3、デフォルトポートを変更する
4、ファイアウォール設定を追加する
5、ジャンプホストでログインする
例1:ルーティングを確認 ip r
--------------------------------------------------------------------------------------------
[root@cPen_python ~]# ip r # 注:ルーティングを確認
default via 192.168.0.1 dev ens33 proto dhcp metric 100
192.168.0.0/24 dev ens33 proto kernel scope link src 192.168.0.32 metric 100
[root@cPen_python ~]# ip r delete default via 192.168.0.1 # 注:ゲートウェイを削除
[root@cPen_python ~]# ip r
192.168.0.0/24 dev ens33 proto kernel scope link src 192.168.0.32 metric 100
[root@cPen_python ~]# ping www.baidu.com # 注:削除後pingが外部ネットワークに通じない
connect: ネットワークに到達できません
[root@cPen_python ~]# ping 8.8.8.8
connect: ネットワークに到達できません
[root@cPen_python ~]# ip r add default via 192.168.0.1 # 注:復元
============================================================================================
例2:AマシンがBマシンにログイン(簡略化されたログイン) vim .ssh/config
#今後多くのマシンに出会うことになるが、IPアドレスは覚えられない
--------------------------------------------------------------------------------------------
#AマシンがBマシンにログインするには、操作の前にAマシンの公開鍵をBマシンに配置して権限を付与する必要がある
#全体の設定を変更せず、個人設定を変更する:ユーザーのホームディレクトリに隠しファイルを作成する
#クライアント上で設定する(自分のホストに設定する)
#注:意味はマシンroot@192.168.0.31 -p 2233に別名Bを付けること
#ForwardAgent yes # 注:転送を有効にする
#StrictHostKeyChecking no # 注:yesを入力する必要はなく、直接keyをknown_hostsに保存する
#ServerAliveInterval 60 # 注:生存状態、サービスの生存状態を確認する
#IdentityFile ~/.ssh/id_rsa # 注:認証秘密鍵を指定する
#以下のように示す
[root@cPen_python ~]# vim .ssh/config
###############################################
ForwardAgent yes
StrictHostKeyChecking no
ServerAliveInterval 60
IdentityFile ~/.ssh/id_rsa
###############################################
Host B
HostName 192.168.0.31
User cPen
Port 2233
[root@cPen_python .ssh]# chmod 600 config # 注:権限を付与する。このコマンドを実行しないとエラーが発生する可能性がある
[root@cPen_python .ssh]# ssh B
Last login: Mon Nov 23 15:05:16 2020 from 192.168.0.32 # 注:ログイン成功
[root@cPen_centos8 ~]#
#注:つまり簡略化された # ssh 192.168.0.31 -l root -p 2233 操作(例えばftpサーバーにログインする場合)
============================================================================================
例3:ポート接続状態を確認(クライアントがサーバーにアクセスしようとする場合に使用 クライアント上でtelnet) telnet 192.168.0.31 2233
#注:このコマンドはtcpのみを測定でき、udpは測定できないが、大部分のサービスはtcpである
#ポートにアクセスできるかどうかを確認する(つまりサービスが到達可能かどうか) telnet 192.168.0.31 2233
--------------------------------------------------------------------------------------------
#pingコマンドは2台のマシンのネットワークが接続されているかを確認する
#サービスが到達可能かどうかを確認するにはtelnetコマンドを使用する
#例:ポートが到達可能かどうかを確認する(サービスが到達可能かどうか)
[root@cPen_python .ssh]# yum install telnet -y
[root@cPen_python .ssh]# telnet 192.168.0.31 2233
Trying 192.168.0.31...
Connected to 192.168.0.31. # 注:サービスが到達可能
Escape character is '^]'.
SSH-2.0-OpenSSH_8.0
============================================================================================
例4:ホストが信頼されていないことを示す WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
--------------------------------------------------------------------------------------------
#注:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!と表示される
~/.ssh/known_hostsを削除する
============================================================================================
例5:ホスト名を永続的に変更 hostnamectl set-hostname "A"
--------------------------------------------------------------------------------------------
#方法1
[root@cPen_python .ssh]# hostnamectl set-hostname "A"
#注:実際には/etc/hostnameを変更する
[root@A ~]# less /etc/hostname
#方法2
#または直接/etc/hostnameを変更する
#一時的にホスト名を変更する
[root@B ~]# hostname cp
============================================================================================
例6:プロセス数を確認 pstree -p
--------------------------------------------------------------------------------------------
#注:プログラムのツリー構造を確認する pstree -p
[root@cPen_python .ssh]# pstree -p |grep sshd
|-sshd(1065)-+-sshd(3782)---bash(3784)
| |-sshd(3980)---bash(3982)-+-grep(4318)
| |-sshd(4059)---bash(4061)
| `-sshd(4288)---bash(4290)
#注:前の部分は親プログラムで、後の部分は親プログラムが生成した子プログラム。子プログラムは新しいbash環境を割り当て、bash環境でコマンドgrepを操作する
#注:親プロセスが子プロセスを生成し、子プロセスが新しいbash環境を生成する
#-------------------------------------------------------------------------------------------
#注:Bマシンに接続した後、bash環境にsshの子プロセスが追加されてBマシンを処理する
[root@a ~]# ssh B
Last login: Mon Nov 23 15:52:16 2020 from 192.168.0.32
[root@a .ssh]# pstree -p |grep sshd
|-sshd(1065)-+-sshd(3782)---bash(3784)
| |-sshd(3980)---bash(3982)-+-grep(4325)
| |-sshd(4059)---bash(4061)---ssh(4323)
| `-sshd(4288)---bash(4290)
============================================================================================
例7:クライアント設定を変更 ~/.ssh/config
#設定ファイル:~/.ssh/config
#作業中にジャンプホストプロキシログインを使用する(クライアントの設定、開発設定を便利にする)
--------------------------------------------------------------------------------------------
#注:現在A、B、Cの3台のマシンがあり、Bはジャンプホストで、AとCは接続できないが、AはBに接続でき、BはCに接続でき、BはDに接続でき、BはEに接続できる……
#注:Bマシンをジャンプホストとして使用し、Aは自分のローカルマシンで、Aマシンがプロキシとして機能し、Bマシンが自動的に転送を行う
#注:ローカルマシンAマシンで操作する
[root@a ~]# vim ~/.ssh/config
###############################################
ForwardAgent yes
StrictHostKeyChecking no
ServerAliveInterval 60
IdentityFile ~/.ssh/id_rsa
###############################################
Host B
HostName 192.168.0.31
User sanchuang
Port 2233
Host 192.168.0.54
User sanchuang
Port 2233
ProxyCommand ssh 192.168.0.31 -W %h:%p -l sanchuang -p 2233
#注:ProxyCommandはAがジャンプホスト(192.168.0.31)を介してBにログインすることを示す
#-------------------------------------------------------------------------------------------
Host * /ftp* /10.* 10ネットワークセグメントで始まるIPアドレス ssh 10.0.0.1 この設定を実行する
User sanchuang
Port 2233
ProxyCommand ssh B nc %h %p -w 10 2>/dev/null
#注:授業中の衝突 前に書いたHost *とssh Bが衝突する
============================================================================================
例8:リモートコマンドを実行 ssh B
--------------------------------------------------------------------------------------------
#Bマシンにログインせずに、Bマシン上のコマンドを実行する(一般的にスクリプトで使用)
[root@a ~]# ssh B ifconfig # 注:Bにログインしてifconfigコマンドを実行
[root@a ~]# ssh B ip a # 注:BにログインしてIPアドレスを確認するコマンド;コマンドの返り値はBマシンからのものである
[root@a ~]# ssh B "/usr/sbin/ip a" # 注:スクリプト内ではコマンドの絶対パスを使用することをお勧めする
============================================================================================
例9:リモート転送 scp(前提としてsshが接続可能)
--------------------------------------------------------------------------------------------
#注:ファイルを転送する
[root@a ~]# touch ahost
[root@a ~]# scp ahost B:/tmp # 注:Aマシンの現在のパスのahostファイルをBマシンの/tmpパスにコピー
ahost 100% 0 0.0KB/s 00:00
[root@a ~]# scp B:/tmp/bhost ./ # 注:Bマシンの/tmp/bhostファイルを現在のパスにコピー
bhost 100% 0 0.0KB/s 00:00
[root@a ~]# scp B:tmp/testhost ./ # 注:Bマシンのホームディレクトリ下のtmp/testhostファイルを現在のパスにコピー
#注:ディレクトリを転送する
[root@a ~]# scp -r adir B: # 注:Aマシンの現在のパスのadirフォルダをBマシンのホームディレクトリにコピー
[root@a ~]# scp -r adir B:bdir # 注:フォルダをコピーして名前を変更する
[root@a ~]# scp -r adir B:bdir/ # 注:上記と同じ
============================================================================================
例10:sftpでファイルを転送(前提としてsshが接続可能)
--------------------------------------------------------------------------------------------
#注:ftpファイル転送
#注:sftpでファイルを転送する。ローカルとリモート間でファイルを転送する
#注:形式 sftp ユーザー名@ホスト名
[sanchuang@a ~]$ sftp B
Connected to B.
sftp> ls # 注:リモートディレクトリのリストを表示
2q aa adir bb bdir testdir testdir2 testhost
sftp> get bdir
Fetching /home/sanchuang/bdir/ to bdir
Cannot download non-regular file: /home/sanchuang/bdir/
sftp> mget bdir
Fetching /home/sanchuang/bdir/ to bdir
Cannot download non-regular file: /home/sanchuang/bdir/
sftp> get 2q # 注:getリモートパス ファイルをダウンロード
Fetching /home/sanchuang/2q to 2q
/home/sanchuang/2q 100% 226 107.5KB/s 00:00
sftp> exit
============================================================================================
例11:pssh pscpコマンド(前提としてsshが接続可能)
--------------------------------------------------------------------------------------------
#バッチ処理
pssh
-h 指定ホストファイルリスト、内容形式”[user@]host[:Port]”
-i 各サーバーの処理情報を指定
[root@a ~]# yum install pssh -y # 注:なければepelリポジトリをインストールする必要がある
[root@a ~]# cat ip.txt
192.168.0.31:2233
192.168.0.54:22
[root@a ~]# pssh -h ip.txt -i "/usr/sbin/ip a"
[1] 17:18:13 [FAILURE] 192.168.0.54:22 Exited with error code 255、
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
…… # 注:sshが通過できることを確認する必要がある
[2] 17:18:13 [SUCCESS] 192.168.0.31:2233 # 注:SUCCESSが返されると実行成功を示す
……
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
……
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen
……
#-------------------------------------------------------------------------------------------
#ip.txtの内容は以下のように記述できる
[root@a ~]# vim ip.txt
sanchuang@192.168.0.31:2233
sanchuang@192.168.0.54:2233
============================================================================================
例12:pscp.pssh バッチ転送ファイル(前提としてsshが接続可能)
--------------------------------------------------------------------------------------------
[root@a ~]# pscp.pssh -h ip.txt pscptest /tmp
# 注:現在のディレクトリにあるpscptestファイルをターゲットホストの/tmpディレクトリに送信
[root@a ~]# vim ip.txt
sanchuang@192.168.0.31:2233
sanchuang@192.168.0.54:2233
[root@a ~]# pscp.pssh -h ip.txt pscptest /tmp
[1] 17:41:31 [FAILURE] sanchuang@192.168.0.54:2233 Exited with error code 1
[2] 17:41:31 [SUCCESS] sanchuang@192.168.0.31:2233
============================================================================================
例13:fping バッチping(前提としてsshが接続可能)
--------------------------------------------------------------------------------------------
#注:バッチpingにfpingコマンドを使用
[root@a ~]# yum install fping -y
[root@a ~]# fping -g 192.168.0.1/24 # 注:-gネットワークセグメントに基づいてping
192.168.0.1 is alive
……
192.168.0.254 is unreachable
[root@a ~]# fping -f ip.txt # 注:-fファイルに基づいて指定されたipをping
192.168.0.31 is alive
192.168.0.54 is alive
三. ssh サービスの補足#
3.1 ssh#
ssh --> secure shell
目的:リモートログインとリモートサーバーの操作 --> 情報暗号化 --> 非常に安全なリモートログインプロトコル
#注:リモートログインリモート操作 コスト削減
ssh プロトコルはアプリケーション層のプロトコルに属する
Linux:openssh --> centos7/8 に標準装備
Windows ssh プロトコルはない
3.2 コマンド#
コマンド:
ssh
scp # 注:リモートコピー
sftp
ssh-keygen
ssh-copy-id
3.3 ログイン方法#
ログイン方法:
Xshell # 注:オープンソースではない
putty # 注:オープンソース
secureCRT # 注:オープンソース
- ユーザー名とパスワード
/etc/passwd # 注:ユーザー名を格納
/etc/shadow # 注:パスワードを格納
- 鍵
公開鍵と秘密鍵
public key --> 公開 # 注:他人に渡す
private key # 注:自分だけのもの
3.4 セキュリティ強化策#
セキュリティ強化策:
ポート番号を変更 22
nmap # 注:ポートスキャン
nc # 注:ポートスキャン
root を無効にする
su # 注:su で root に切り替える
パスワードの複雑性
鍵を有効にする # 注:パスワード認証を禁止する
パッチを適用するか、最新バージョンの ssh ソフトウェアをインストールする
iptables ファイアウォール
#注:無パスワードトンネル(鍵ログイン)
3.5 無パスワードトンネル#
無パスワードトンネル:
片方向の信頼 # 注:鍵を他のホストに渡す
双方向の信頼 # 注:双方が公開鍵を互いに渡す
#注:一般的に root ユーザーを使用するが、安全のために通常のユーザーを使用する
3.6 ansible#
ansible:自動化運用ツール:バッチ管理と操作
#注:ansible はバッチ管理とバッチデプロイのソフトウェア;基盤で ssh プロトコルを使用し、無パスワードトンネルを構築することを推奨する
#注:ansible ソフトウェアは Python で書かれている
3.7 ログファイル:/var/log/secure#
ログファイル:/var/log/secure
[root@cPen_centos8 ssh]# vim /etc/ssh/sshd_config
# Logging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV # 注:ログタイプ 認証タイプ AUTHPRIVを設定
#LogLevel INFO
ログファイル:
/var/log/secure
[sanchuang@cPen_centos8 ~]$ ps aux|grep rsyslog # 注:外部にログを出力するプロセス
sshは自分のログ機能をrsyslogサービスに外部委託して記録させる
[sanchuang@cPen_centos8 ~]$ vim /etc/rsyslog.conf
# authprivファイルには制限されたアクセスがあります。
authpriv.* /var/log/secure
3.8 ssh サービスにログインできない場合、どう対処するか?#
ssh サービスにログインできない場合、どう対処するか?
ネットワークが正常かどうかを確認する
ping
ssh サービスが起動しているか、ポート、selinux を確認する
ssh の設定:root が無効になっているか、パスワード認証が無効になっているか
ファイアウォール iptables を確認する
service firewalled stop
ブラックリストとホワイトリスト # 注:centos6、7 で使用、8 ではない
3.9 ssh 無パスワードトンネル#
ssh 無パスワードトンネル
鍵ペアを生成する
ssh-keygen
ssh-keygen -t ecdsa
公開鍵をアップロードする
ssh-copy-id -i id_ecdsa.pub root@192.168.0.35
ssh-copy-id -p 2299 -i id_ecdsa.pub root@192.168.0.35
リモート接続する
ssh -p '2299' 'root@192.168.0.39'
無パスワードトンネルの構築手順:
[root@localhost .ssh]# ssh-keygen -t ecdsa
[root@localhost .ssh]# ssh-copy-id -p 2299 -i id_ecdsa.pub root@192.168.0.39
[root@localhost .ssh]# ssh -p '2299' 'root@192.168.0.39'
known_hosts:以前にssh接続したマシンの公開鍵を保存する
scpは2台のマシン間でsshプロトコルを使用してファイルやフォルダをコピーすることです
[root@cPen_centos8 ssh]# ssh root@192.168.0.24 # 注:リモートログイン
[root@cPen_centos8 ssh]# ssh root@192.168.0.24 df -Th # 注:リモートコマンドを実行
[root@cPen_python ssh]# scp echo.sh root@192.168.0.35:/root # 注:ファイルを転送(ソースファイル リモート)
[root@cPen_python ssh]# scp -r /boot root@192.168.0.35:/root # 注:フォルダを転送
[root@cPen_python ssh]# scp -r root@192.168.0.35:/etc/passwd # 注:フォルダを取得
[root@cPen_python ssh]# ssh root@192.168.0.35 bash /root/echo.sh feng zhang wang
scpは2台のマシン間でsshプロトコルを使用してファイルやフォルダをコピーする
---------------------------------------------------------------------------------------------------------------------------------
[root@cPen_centos8 ssh]# getenforce # 注:selinuxを確認
Disabled
[root@cPen_centos8 ssh]# setenforce 0 # 注:selinuxを一時的に無効にする
setenforce: SELinux is disabled
---------------------------------------------------------------------------------------------------------------------------------
[sanchuang@cPen_centos8 ~]$ ifdown ens33
[sanchuang@cPen_centos8 ~]$ ifup ens33
#注:rootユーザーのログインを無効にした後、ローカルではrootユーザーでログインできる