- 投稿日:2022-04-02T18:26:13+09:00
VirtualBox上のLinux(CentOS)からインターネットに接続する
Webアプリケーション開発の勉強をはじめるにあたって、 仮想マシン上のLinuxにApache httpdを入れてみようと思ったら、 そもそもネットにつながらなかった…。 環境 VirtualBox6.1 ホストOS: Windows10 Home 20H2 ゲストOS: CentOS 8.5.2111 Red Hat(64bit) 1.VirtualBoxのアダプターの設定(Virtualbox Host-Only Ethernet Adapter) 最初、間違えて、[ツール]→[環境設定]→[ネットワーク]の画面で設定するのかと思っていて、 よくわからなくてはまりました…。 正しくは、[ツール]の三本線の[ネットワーク] です。 私の場合、初めてVirtualBoxをインストールしたときにすでに設定していたようですが、 DHCPサーバーが有効になっていたのでオフにしました。 ●アダプターを手動で設定 IPv4 アドレス : 192.168.69.1 ※環境によって違いますが私の場合 IPv4 ネットマスク:255.255.255.0 2.VirtualBox上のCentOSのネットワークの設定 仮想マシンは終了しておく。 仮想マシン→[ネットワーク] アダプター1 割り当て : NAT アダプター2 [ネットワークアダプターを有効化]にチェック 割り当て : ホストオンリーアダプター、名前 : Virtualbox Host-Only Ethernet Adapter ※1で設定したもの 3.Windows10でインターネット接続の共有 [設定]→[ネットワークとインターネット]→[Wi-Fi]→[アダプターのオプションを変更する] または [コントロール パネル]→[ネットワークとインターネット]→[ネットワーク接続] [Wi-Fi]→右クリック→[プロパティ]→[共有タブ] [ネットワークのほかのユーザーに、このコンピューターのインターネット接続をとおしての接続を許可する]にチェックをつける ホームネットワーク接続 : VirtualBox Host-Only Network 4.VirtualBox上のCentOSで起動後の設定(ネットワークマネージャー) nmtui enp0s3の設定 IPv6 : Ignore enp08sの設定 私の環境では、初期表示時は、名前欄が空欄でした。 IPv4 : Manual → show → 192.168.69.2 ※環境によって違いますが私の場合 IPv6 : Ignore 設定の反映 systemctl restart NetworkManager systemctl restart network 5.接続確認 仮想マシン上のLinuxからインターネット 仮想マシン上のLinuxにて、 ping google.com Windows10から仮想マシン上のLinux ssh root@192.168.69.2 ※4で設定したIPアドレス 参考にしたページ 【VirtualBox】ホストオンリーアダプタでのインターネット接続 VirtualBoxでNATとホストオンリーアダプターによる安全なネットワーク環境構築方法
- 投稿日:2022-04-02T15:34:55+09:00
Envaderにて、ftpコマンドを実践しながら学ぶ
30代後半、未経験からIT業界のエンジニア転職へ挑戦している、kobakichiです。 今回もEnvaderを利用して、Linuxのコマンドについて学んだので、その振り返りと言語化を兼ねて書いていきます。 今回学んだのは、ファイルの転送などをするときに使用するコマンドftpについてです。 私は全くこのコマンドを使うことは無いので、こういった用意された環境で実践しながら学べるのは本当にありがたい。 そして、ftpコマンドも奥が深いので、あくまで私が実践しながら感じたことを記事にしていることをご理解ください。 Envaderについてついて気になる方は、リンクを貼っておきますので参考にしてください。 Envaderコース一覧 今回使用したシナリオ 参考にさせていただいた記事等 OSI参照モデル ファイル転送の「FTP」とは?通信の仕組みやデメリットなどを解説 ftpコマンドについて詳しくまとめました 【Linuxコマンド集】 FTP FTP(File Transfer Protocol)は、サーバとクライアントの間でファイルの転送を行う時に必要な通信プロトコル。 他にはHTTPやIMAPなどなどあると思いますが、その内の一つ。 OSI参照モデルの第7層、アプリケーション層に該当。 FTPについてはこちらの記事が分かりやすかったです。 ファイル転送の「FTP」とは?通信の仕組みやデメリットなどを解説 ftpコマンド Linux環境において、CUIでFTPサーバーとの通信をやり取りする時に使用するコマンド。 これを使用することで、FTPサーバーへ接続して、ファイルのアップロード、ダウンロード、さらにはアクセス権を変更したりなど、FTPサーバー内を色々と操作できるようになります。 ftpコマンドの注意点 ftpコマンドは、FTPサーバーへ接続する際の認証時のパスワードやデータ送受信の内容は一切暗号化されていないので、セキュリティは考慮できていません。 なので、実際に使用する際にはsftpコマンドやscpコマンド、またはSSH接続などを使用する方が良さそうです。 ftpコマンドの使い方 ftpサーバーへの接続 ftp サーバーのアドレス # 例 ftp 172.10.10.5 こうすることで自分の接続したいftpサーバーを指定して、ログインやパスワードを入力する段階へ進む。 サーバーのアドレスを指定しないでftpコマンドだけ叩いた場合、ftpコマンドだけが起動し、待機状態になる。 この場合には、ftp openコマンドによりサーバーアドレスを指定することでftpサーバーへ接続が可能になる。 # 待機状態 envader@172-19-1-2:~$ ftp ftp> # openコマンドで接続先アドレスを指定 envader@172-19-1-2:~$ ftp ftp> open 172.19.1.11 ftpコマンドのオプション ここで紹介するオプションは2つ オプション 説明 -v FTPサーバーの処理後のメッセージを表示する -i FTPサーバーの処理後の確認メッセージを省略する この意味がなかなか理解できなかったのですが、実際にコマンドを実行することで理解できました。 オプションを使うタイミングは、FTPサーバーへ接続する時。 そうすると、サーバーへ接続した後にオプションが適用された状態でサーバーとのやり取りができるようになります。 # 確認メッセージを表示する ftp -v 172.19.1.11 # 確認メッセージを省略する ftp -i 172.19.1.11 これを使うことで、複数のファイルをアップロードしたり、ダウンロードしたりした時に表示される確認メッセージを全部表示させるか、省略することができるようになります。 実際に比べてみます。 # ローカルに以下のファイルがある envader@172-19-1-2:~$ ls mydata.txt test1.txt test2.txt test3.txt # -vオプションでftpサーバーへ接続 envader@172-19-1-2:~$ ftp -v 172.19.1.11 Connected to 172.19.1.11. 220 (vsFTPd 3.0.3) Name (172.19.1.11:envader): envader 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. # mputコマンドで複数のファイルをftpサーバーへアップロード ftp> mput test*.txt mput test1.txt? y 200 PORT command successful. Consider using PASV. 150 Ok to send data. 226 Transfer complete. mput test2.txt? y 200 PORT command successful. Consider using PASV. 150 Ok to send data. 226 Transfer complete. mput test3.txt? y 200 PORT command successful. Consider using PASV. 150 Ok to send data. 226 Transfer complete. # 一つのファイルをアップロードするごとに確認される。 どうでしょうか? イメージはこんな感じです。 続いて-iオプションで確認メッセージを省略します。 # -iオプションで確認を省略 envader@172-19-1-2:~$ ftp -i 172.19.1.11 Connected to 172.19.1.11. 220 (vsFTPd 3.0.3) Name (172.19.1.11:envader): envader 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. # mputで複数ファイルをアップロード ftp> mput test*.txt local: test1.txt remote: test1.txt 200 PORT command successful. Consider using PASV. 150 Ok to send data. 226 Transfer complete. local: test2.txt remote: test2.txt 200 PORT command successful. Consider using PASV. 150 Ok to send data. 226 Transfer complete. local: test3.txt remote: test3.txt 200 PORT command successful. Consider using PASV. 150 Ok to send data. 226 Transfer complete. いちいち確認メッセージが表示されることなく、一気にアップロードができました。 オプションによって、こういった違いがあるんですね。 ftpコマンドの種類 ftpサーバー内では、使えるコマンドの種類があるようです。 Linuxコマンドが全て使えるわけでは無いので注意が必要ですね。 ftpコマンド一覧 一部ですが、一覧にてまとめました。 コマンド 説明 open サーバーに接続する close FTPサーバーから切断する quit FTPモードを終了する(exitでも可能) put ローカルのファイルをアップロードする get ftpサーバーからダウンロードする mput 複数のファイルをアップロードする mget 複数のファイルをダウンロードする ls FTPサーバー内のファイルやディレクトリを一覧表示する mkdir FTPサーバー内でディレクトリを作成する chmod ファイルのアクセス権限を変更する delete 指定したファイルを削除する もっと知りたい場合には、ftpモードにして?コマンドを叩くとコマンド一覧が見れます。 何か分からないことや知りたいことがあった場合には?コマンドは便利そうです。 envader@172-19-1-2:~$ ftp ftp> ? Commands may be abbreviated. Commands are: ! dir mdelete qc site $ disconnect mdir sendport size account exit mget put status append form mkdir pwd struct ascii get mls quit system bell glob mode quote sunique binary hash modtime recv tenex bye help mput reget tick case idle newer rstatus trace cd image nmap rhelp type cdup ipany nlist rename user chmod ipv4 ntrans reset umask close ipv6 open restart verbose cr lcd prompt rmdir ? delete ls passive runique debug macdef proxy send まとめ Envaderを利用して、ftpについて学んでみました。 個人的には-iオプションを使って確認メッセージを省略した方が使い勝手が良さそうなイメージでしたが、実際に業務で使われている方はどういった感じなのかが気になるところです。 最後まで読んでいただき、ありがとうございました。
- 投稿日:2022-04-02T10:18:07+09:00
Ubuntu ローカルのgit設定~SSHキー取得~GitHub,Gitlab連携まで
環境 Ubuntu18.04 目的 Ubuntuを入れたときにGitHubやGitLabからSSHキーを利用してcloneできるようにしたい。 ローカルのgit設定 $ sudo apt install git $ git config --global user.name [名前] $ git config --global user.email [メールアドレス] SSHキーの作成 $ ssh-keygen -t rsa -b 4096 -C [メールアドレス] Enter a file in which to save the key (/home/you/.ssh/id_rsa): [Press enter] (略) Enter passphrase (empty for no passphrase): (略) Enter same passphrase again: (略) メッセージが出てきたらEnterを押します。合計3回Enterを押すだけで良いです。 四角の中に暗号のようなものが入った表示がされたらOK。 SSHキーをコピー 直接コピーできないので以下のコマンドよりコピー。 xclipを最初にインストールしてください。 $ sudo apt install xclip $ xclip -sel clip < ~/.ssh/id_rsa.pub GitHub,GitLabにSSHキーを登録 いずれもプロフィール画面をクリックし、 GitHub:Settings→SSH and GPG keys→new SSH key GitLab:Edit Profile→SSH keys を押します。 keyの欄に先ほどコピーしたSSH keyを貼り付けます。titleは適当(PCの区別がつくような名前とか)で大丈夫です。 addのボタンを押したらOKです。 conig設定 .sshディレクトリに任意のエディターでconfigファイルを新規作成。 $ cd .ssh $ gedit config configファイルに以下を記述。 Host github HostName github.com IdentityFile ~/.ssh/id_rsa User git IdentitiesOnly yes Host gitlab.com HostName gitlab.com IdentityFile ~/.ssh/id_rsa User git IdentitiesOnly yes SSH接続確認 ネットワークに注意してください。学校や会社で管理されているネットワーク内ではSSH接続ができない可能性があります。 SSH接続する際は、外部ネットに接続してください。 以下のように表示されたら完了です。 GitHub $ ssh -T git@github.com Are you sure you want to continue connecting (yes/no)? yes Hi [username]! You've successfully authenticated, but GitHub does not provide shell access. GitLab $ ssh -T git@gitlab.com Are you sure you want to continue connecting (yes/no)? yes Welcom to Gitlab, [username]!
- 投稿日:2022-04-02T04:22:42+09:00
Envaderにて、Linuxコマンド tr sed について学ぶ
30代後半、未経験からIT業界のエンジニア転職へ挑戦している、kobakichiです。 今回もいつもお世話になっているEnvaderを利用して、Linuxコマンドを実践しながら学びました。 その振り返りとまとめです。 Envaderとは、Linuxが環境構築不要で、オンラインで学ぶことができるオンライン学習サービスです。 気になる方は、リンクを貼っておきますので参考にしていただければと思います。 コース一覧 今回使用したシナリオ 今回取り組んだのは、ファイルの中にある文字列を置き換える時に使用するコマンドtr sedについて実践しながら学びました。 trコマンド 標準入力から読み込まれた文字列を変換したり、削除したりするコマンド。 文字が連続していた場合には、1つにまとめたりもできるらしいです。 使い方の基本 tr オプション 文字列1 文字列2 # 文字列1を文字列2に置き換える。 trコマンド オプション オプション 説明 -d 文字列1でマッチした文字列を削除する -s 連続したパターン文字列を1文字としてまとめる -t 文字列1を文字列2の長さに切り詰めてから処理する -c 文字列に含まれない文字全てを対象にする クラスという[]を使うことでもtrコマンドを使うことができるようです。 オプション 説明 [:alpha:] 英字に変換 [:lower:] 英小文字に変換 [:upper:] 英大文字に変換 [:digit:] 数字に変換 [:alnum:] 英数字 [:space:] スペースを入れる 使い方 例 # trコマンド 小文字から大文字へ変換 envader@172-19-1-2:~$ cat /etc/shells | tr 'a-z' 'A-Z' # /ETC/SHELLS: VALID LOGIN SHELLS /BIN/SH /BIN/DASH /BIN/BASH /BIN/RBASH /USR/BIN/TMUX # クラスを使った書き方 # 小文字を大文字に変換 cat /etc/shells | tr [:lower:] [:upper:] # /ETC/SHELLS: VALID LOGIN SHELLS /BIN/SH /BIN/DASH /BIN/BASH /BIN/RBASH /USR/BIN/TMUX -dでマッチした文字列を削除する envader@172-19-1-2:~$ cat /etc/shells # /etc/shells: valid login shells /bin/sh /bin/dash /bin/bash /bin/rbash /usr/bin/tmux #/を削除 envader@172-19-1-2:~$ cat /etc/shells | tr -d / # etcshells: valid login shells binsh bindash binbash binrbash usrbintmux #/とbを削除 envader@172-19-1-2:~$ cat /etc/shells | tr -d /b # etcshells: valid login shells insh indash inash inrash usrintmux # /とbとiを削除 envader@172-19-1-2:~$ cat /etc/shells | tr -d /bi # etcshells: vald logn shells nsh ndash nash nrash usrntmux なかなか面白いですね。 リダイレクトで新しくファイルを作成する # binを削除して、リダイレクトで新しくtr.txtファイルを作成する envader@172-19-1-2:~$ cat /etc/shells # /etc/shells: valid login shells /bin/sh /bin/dash /bin/bash /bin/rbash /usr/bin/tmux envader@172-19-2-2:~$ cat /etc/shells | tr -d bin > tr.txt envader@172-19-2-2:~$ cat tr.txt # /etc/shells: vald log shells //sh //dash //ash //rash /usr//tmux こんな使い方もできるんですね。 sedコマンド sed(Strem Editor)は、テキストファイルに対して編集を行う。 先ほどのtrとやっていることは似ているのですが、こちらは指定したファイルをコマンドやスクリプトとしてsedに指示しておき、その指示に基づいて編集を行い、結果を表示します。 trコマンドと同様、sedコマンドも置換や削除はできますが、ファイルを保存する訳ではないのでコマンドを実行した後はファイルの内容は元のファイルに戻ってしまいます。 保存したければ、-iオプションをつけてファイルを上書きするようにすれば編集した内容でファイルが保存されます。 使い方の基本 sed オプション コマンド ファイル名 # 複数のコマンドを指定するときは-eオプションをコマンドごとに使う必要がある sed -e コマンド1 -e コマンド2 ファイル名 # コマンドが書かれたスクリプトファイルを指定するときは-fを使う sed -f スクリプト ファイル名 上でも少し紹介しましたが、以下オプションです。 sed オプション オプション 説明 -e 複数のコマンドを指定する -f コマンドが書かれたスクリプトファイルを指定する -i 処理した内容でファイルを上書きする sedコマンドで使用できる主なコマンド コマンド 説明 d マッチした行を削除する s パターンに基づいて置換する。最後にgをつけると、マッチ箇所を全て置換する y 文字を変換する sコマンドを使って色々やってみる。 注意点 sコマンド単体だと、検索パターンにマッチした最初の部分しか置換されない。 マッチした部分全部を置換したい場合には、gスイッチと呼ばれるgを最後に付けることで、全部が置換される。 envader@172-19-1-2:~$ cat sample.txt samplepaper papersample aspapersample pasampleper paperpaper # paperをgetに置換 最初にマッチした箇所しか置換されていない envader@172-19-1-2:~$ sed s/paper/get/ sample.txt sampleget getsample asgetsample pasampleper getpaper # gスイッチを使ってパターンにマッチした部分を全て置換する envader@172-19-1-2:~$ sed s/paper/get/g sample.txt sampleget getsample asgetsample pasampleper getget # $を付けることで、それぞれの最後に指定した文字を追加することができる envader@172-19-1-2:~$ sed s/$/get/ sample.txt samplepaperget papersampleget aspapersampleget pasampleperget paperpaperget # paper$とすることで、マッチした最後の箇所のみを置換することができる envader@172-19-1-2:~$ sed s/paper$/get/ sample.txt sampleget papersample aspapersample pasampleper paperget # ^で先頭に指定した文字を追加できる envader@172-19-1-2:~$ sed s/^/hero/ sample.txt herosamplepaper heropapersample heroaspapersample heropasampleper heropaperpaper # ^paperで、paperの先頭にマッチした文字を置換できる envader@172-19-1-2:~$ sed s/^paper/grate/ sample.txt samplepaper gratesample aspapersample pasampleper gratepaper # 1~3行目の先頭に>を付ける指定 envader@172-19-1-2:~$ sed '1,3s/^/>/' sample.txt >samplepaper >papersample >aspapersample pasampleper paperpaper sコマンドを複数使用する例 sコマンドを複数指定する場合には、上で紹介したオプション-eを使う。 -eを使わないと、複数のsコマンドはエラーになってしまう。 # -eオプションをつけないと複数のコマンドはエラーになる envader@172-19-1-2:~$ sed '1,3s/^/>/' '1,3s/$/</' sample.txt sed: can't read 1,3s/$/</: No such file or directory >samplepaper >papersample >aspapersample pasampleper paperpaper # -eオプションが一つだけだと、これもエラーになる envader@172-19-1-2:~$ sed -e '1,3s/^/>/' '1,3s/$/</' sample.txt sed: can't read 1,3s/$/</: No such file or directory >samplepaper >papersample >aspapersample pasampleper paperpaper # -eオプションをそれぞれのコマンドに付けることで、しっかりと機能するようになる # 1~3行目の先頭と末尾に><を付ける envader@172-19-1-2:~$ sed -e '1,3s/^/>/' -e '1,3s/$/</' sample.txt >samplepaper< >papersample< >aspapersample< pasampleper paperpaper う〜ん、色々な挙動が見れて面白い。 dコマンド 指定した行を削除する。 注意したいのは、文字列を削除するのではなく、あくまで行を削除するということ。 envader@172-19-1-2:~$ cat sample.txt samplepaper papersample aspapersample pasampleper paperpaper # 1行目のみ削除 envader@172-19-1-2:~$ sed 1d sample.txt papersample aspapersample pasampleper paperpaper # 1~3行目までを削除 envader@172-19-1-2:~$ sed 1,3d sample.txt pasampleper paperpaper # 1~3行目までを削除して、sa2.txtとしてリダイレクトして保存 envader@172-19-1-2:~$ sed '1,3d' sample.txt > sa2.txt envader@172-19-1-2:~$ cat sa2.txt pasampleper paperpaper yコマンド 検索文字にマッチする文字があった場合、その文字を置換文字の同じ位置の文字に置き換える。 注意点 yコマンドは、検索文字と置換文字を同じ長さにしないとエラーになるので注意。 envader@172-19-1-2:~$ cat sample.txt samplepaper papersample aspapersample pasampleper paperpaper # sa/12は同じ文字数じゃないとエラーになる。 envader@172-19-1-2:~$ sed y/sa/12/ sample.txt 12mplep2per p2per12mple 21p2per12mple p212mpleper p2perp2per # saを1のみに置換しようとすると、エラーが発生 envader@172-19-1-2:~$ sed s/sa/1/ sample.txt ed: -e expression #1, char 7: strings for `y' command are different lengths # sコマンドを使うときは、saを1に置換できる。この差がsとyコマンドの違い envader@172-19-1-2:~$ sed s/sa/1/ sample.txt 1mplepaper paper1mple aspaper1mple pa1mpleper paperpaper 一瞬、あれ?sコマンドとyコマンドって同じじゃない?と疑問に思ったのですが、こうやって実際にやってみると違いが分かりますね。 -fオプション コマンドが書かれたスクリプトファイルを指定して、実行することができるオプション。 今回は環境の関係上実行できなかったので、書き方だけを書いてみます。 # sedscriptsファイルがあったとする cat sedscripts y/sa/12/ # sedscriptsファイルを指定して実行する sed -f sedscripts sample.txt # 実行結果 12mplep2per p2per12mple 21p2per12mple p212mpleper p2perp2per このように、予めコマンドと内容を記述したファイルを用意しておいて、sedコマンドを実行することもできます。 -iオプション sedコマンドを実行しただけだと、処理が終わるとファイルの内容は元の状態に戻ってしまいますが、これを処理した内容に上書きするのが-iオプション。 実際にやってみる。 envader@172-19-1-2:~$ cat sample.txt samplepaper papersample aspapersample pasampleper paperpape # -iオプションでファイルを上書き envader@172-19-1-2:~$ sed -i y/sa/66/ sample.txt # 無事ファイルが上書きされている envader@172-19-1-2:~$ cat sample.txt 66mplep6per p6per66mple 66p6per66mple p666mpleper p6perp6per ちゃんと上書きされていますね。 本当、色々な動きがあって面白い。 ちなみに、-iオプションを使ったときは、実行結果が出力されないみたいです。 まとめ 今回はEnvaderを使って、tr sedコマンドについて実践しながら学びました。 私個人的には、sedコマンドの方が使いやすい印象を受けました。 オプションやらコマンドやらややこしいので、使う時には確認しながら実行したいと思います。 最後まで読んでいただき、ありがとうございました。 参考にした記事等 Envaderシナリオ LinuC101 102 教科書