外出先から自宅debian PCに接続する
以前の会社からの習慣で、外で仕事する癖がついてしまっています
いつもmacbookなので問題なかったんですが、 今はdesktop PCにdebian入れてしまったので、外にいけなくなりました
かといって、彼らのようにdesktopを外に持ち出すぐらいの強さは自分にはありません
なので、素直に「外で自宅のPCにmacbookから接続する」方法をさがすことにします
ssh接続してみる
- これを実現するには「ssh接続」というのをすればいいらしい
- SSH/Debianへのインストールを参考にsshをinstall
- Mac OS Xでsshでサーバーへ接続を参考にssh接続してみる
- 自宅PCのdebianのipadressをcheckしてみる
違うネットワークでssh接続してみる
自宅のルータ設定
- 違うネットワークから自宅のwifiにつながってるPCに接続する場合、自宅のルータで 「ポート解放」 という設定をするらしい
- 自分が使ってるルータで設定方法を確認
- 参考: https://www.buffalo.jp/support/faq/detail/8346.html
やってみると、、、 つながった!
ここまでで、
- テザリングにつなげたmacから
- 自宅のwifiにつながったdebian PCに
- $ ssh sdk@xxx.xxx.xxx.xxx
でssh接続できるようになった。(xxx..はグローバルIP)
、、、
というか、この後のプラクティスで「sshの基本を理解する」ってのがあるのに今気付いた。ssh接続はそれやってからでもよかったかも、、
上記まででssh接続はできてるっぽいけど、セキュリティ的になんか危ない気がするので、
ここからは、プラクティスの「sshの基本を理解する」を読みながら、ssh接続の続きをやっていく。
キーペア登録
- .pubが付いた方が公開鍵。publicの略かな。
- ついてない方が秘密鍵
- evalとは何か
- 参考: https://qiita.com/kod314/items/f8aa4929501882e97b38
- 引数に変数が入っていたら展開する
- 参考: https://qiita.com/kod314/items/f8aa4929501882e97b38
macはキーチェーンにキーペア登録できるみたい
- 登録してみて、キーチェーンに入ったのを確認↓
- 登録してみて、キーチェーンに入ったのを確認↓
パスワードでのログインを無効にする設定。秘密鍵を持っていないとログインできないようにする為。
PasswordAuthentication no
今までログインできてた
$ ssh sdk@xxx.xxx.xxx.xxx
で、今もログインするか確認- はじかれた(正しい挙動)
- 鍵を使った
$ ssh -i ~/.ssh/debian_rsa sdk@xxx.xxx.xxx.xxx
でログインできるか確認- ログインできた(望んでいる挙動)
- ログインできた(望んでいる挙動)
localeがおかしい
- なんか、ssh接続した時に、
locale
がなんちゃら、って出てくる
ローカルのPCがlocaleをja_JP.UTF-8で上書きしようとしているが、サーバー側がそれを受け付けない」
が原因みたい。上記URLを参考に対処。お、出なくなった。
- けど、これ変更して大丈夫だろうか。。。何か起こったらその時対処しよう。
ssh接続port変更
- portを変更した、最終的なコマンドはこれ↓ 666番で繋ぐことにした。オーメン。
$ ssh -i ~/.ssh/debian_rsa sdk@xxx.xxx.xxx.xxx -p 666
- 22番で繋ぐとはじくのを確認
これですべて完了! やった!
これでdesktop PCを持ち出さなくて良くなったぞ!
sshで不正なアクセス来てるかな
CUIのPCを無線LANに接続する
debian(CUI) を installしたPCの無線LAN化
- おおまかな流れです。
参考URL
- 無事無線に接続できた。参考になったURLたち
- Debian (Stretch) で無線 LAN の設定
- Debian ( CUI ) で無線LAN
- Ubuntu 18.04のapt installで"Unable to locate package"のエラーはsources.listを編集して解決できる
- Linuxゲリラ戦記
- Debian -- パッケージ
- Linuxでwpa_supplicantを使ってWPA2の無線LANに接続する方法
- linux – コマンドの出力をクリップボードに直接コピーするには?
- How to avoid 5 minute boot delay in 18.04: "A start job is running for Raise network interfaces"
- Debian 9.8でWiFiを使う
- Debian -- stretch の firmware-iwlwifi パッケージに関する詳細
- LinuxのDebian系パッケージ管理 apt系コマンドの使い方
- debian -- iwconfigを使用したい。
ポイント
- 初期設定のまま、どんなpackageでもinstallできるわけではない。package内容によってはレポジトリ作る必要(non-freeとか)
- 自分のPCの無線LANデバイスの名前を確認する
- ネット上で紹介されている希望のpackageが、今も存在するか確認する。なければ代わりを探す
- source.listの反映にはコマンド流す
- 事象が起こるたび問題の切り分けを。
以下は迷走履歴。。一応書いておく。
手動設定開始
- デスクトップ環境を入れずにlinuxをセットアップすると、無線 LAN は手動で設定しなくてはならない。Debian Wiki に設定方法が書いてあった。
- Debian ( CUI ) で無線LANをもとに
$ apt-get install wlan-tools
してみるUnable to locate package wlan-tools
とエラー- ダウンロード先が設定されていないのが問題らしい
- Ubuntu 18.04のapt installで"Unable to locate package"のエラーはsources.listを編集して解決できる を元に、source.listを編集
- source.listを編集しても効かず。反映するにはコマンド必要?
- Linuxゲリラ戦記 を参考にsource.listを反映
- しかし何も起こらない。
- source.listを編集しても効かず。反映するにはコマンド必要?
そもそもそのpackage存在する?
- Debian -- パッケージ では
wlan-tools
がヒットしない。今はない? - wlan-tools をやめて、Linuxでwpa_supplicantを使ってWPA2の無線LANに接続する方法 を元に、
wpasupplicant
にしてみる- installできた
- しかしその次の
無線LANを無効 / 無効化
($ ifconfig wlan0 up / down
)がうまくいかず- そもそもここに書いているように、
wlan0
という名前ではないのでは(人によって違うのでは)
- そもそもここに書いているように、
無線LANのデバイス名取得
$ ifconfig
で無線LANのデバイス名取得enp1s0
と表示された。このPCの無線LANのデバイス名はenp1s0$ ifconfig enp1s0 down
、$ ifconfig enp1s0 up
すると反応する。 enp1s0 という名前で間違いなさそう- デバイス名が分かったので、Debian (Stretch) で無線 LAN の設定 のwpa_passphrase から続きやる
- passが長すぎ。。cuiの出力をコピーする方法があるっぽいのでこれ(linux – コマンドの出力をクリップボードに直接コピーするには?)を使おう。
- 設定後、再起動。
無線接続確認
- wifiつながってるかのチェックをするので、LANケーブル抜いてPC起動
a alert job is running for raise network interfaces
の文字が表示されて、起動がやたら遅い。- ググる。同じ人いた。How to avoid 5 minute boot delay in 18.04: "A start job is running for Raise network interfaces"
PCのデバイス一覧表示
$ lspci
してデバイス確認- 参考: Debian 9.8でWiFiを使う
Intel Centrino Advanced-N 6205
って表示された。多分これがこのPCの無線受信機。- 一応この無線のドライバをinstallする
- 参考: Debian -- stretch の firmware-iwlwifi パッケージに関する詳細
- が、、その前に、、はい、注目。
non-free
と書いてある。 ここ(LinuxのDebian系パッケージ管理 apt系コマンドの使い方)を参考に、aptにnon-freeのレポジトリを追加する
- その後、
$ apt install firmware-iwlwifi
でinstall。成功。
iwconfigコマンドを使いたい
- でも、結局
$ iwconfig
ってコマンド使わないことには無線設定できないっぽい - iwconfig 使いたいが
wlan-tools
がもうない。どうするかwireless-tools
ならいけた。これが代わりっぽい。参考: debian -- iwconfigを使用したい。- install成功。
$ iwconfig
してみる - 結局、自分のPCの無線も受信機のデバイス名は、Debian (Stretch) で無線 LAN の設定と同じ、
wlp3s0
だった。 /etc/network/interfaces.d/enp1s0
って名前で作ってあったファイル名と内容を編集して、再起動- 無事、無線つながった。
「a alert job is running for raise network interfaces」 の文字が表示されて、起動がやたら遅い。
この問題も解消されていた。起動の速さは以前に戻った。
- install成功。
完了!
リビングから引っ張ってきてた有線LANがなくなって、転んでた相方もごきげんになりました
PCにdebianをinstallする
debian install
- PCにdebianをinstallするまでのおおまかな流れです。
まず isoイメージ本体をDLしてみる
- 手元にUSBメモリはあるが、CDがない。USBメモリを使ってできないか。。
- 押入れから外付けHDD引っ張り出してくる。 と、思ったらそのHDDはmac用にフォーマットしてあるので、windowsに挿しても反応しなかった、、
- Graphical install
- Install
- Advanced options
- Accessible dark contrast installer menu
- Install with speech synthesis
が出てきた。 Installを選択。
設定進むと、DHCPの設定が失敗すると出てくる。
有線のLANケーブルを繋げばいいのかな?と思ってリトライ。 以前使った10m LANケーブル、持っててよかった、、
DHCP構築成功、次に進む。
debianをどこに保存するか。 SDカードの余り(32GB)を差して、それを指定した。(後述しますが、SDカードはやめたほうがいいです)
プロキシを設定せよとダイアログが出る。
httpプロキシとは?: webブラウザのパシリ的存在らしい。ブラウザがプロキシに命令=>プロキシがサーバーに要求=>サーバーがプロキシに返却=>プロキシがブラウザに返却 らしい。
なので、HTTPプロキシを設定するという事は、 「ブラウザにフィルターを掛けてウイルスはじいたり、リクエストのサイズ制限をしたりする設定」っぽい。
自宅のネット環境に、プロキシ設定がされてるかなんてわからないので、ブラウザからプロキシ設定を見てみる。
自分のにはプロキシが設定されていない、事が分かった。
と思ったら、ガリア戦記のコラムの方に書いてあった。 https://www.garunimo.com/program/linux/column-linux17.php
よって、さきほどのdebianのプロキシ設定は「しない」で進む。
debian本体は入ったが、それ以外はいれるか?と聞かれる。
デフォルトではデスクトップ環境も入るようだけど 今回の課題は「GUI禁止」っていうのを思い出して、 デスクトップ環境ってGUIなの?って思いながら、一応その選択外して、標準環境だけにして進む。 それって、wifi接続設定もCUIでやる事になるんじゃ、、と思いながらも進む。
しかしここまで来て、、 installが済んだので再起動しても、debianが立ち上がらない。
調べると、自分のPCのbiosにSDカードで起動という項目がない、、
=> やりなおし、、 素直にHDDにinstallする事に。
同じことをもう一回やって、、
totalで4時間後、、debianをinstallできた!
その他
適当に触ってみた。
$ man ls
とかやってみると、
interrupt to abort
と出て、処理が止まらなくなった。いきなりかい。
止めようと思ってcontrol + C
とかするけど全然効かない。
数分後、、ずっとcaps + C
してるのに気付いた。ctrl + C
するとちゃんと止まった。
windowsキーボードなつかしすぎる。おぼえてない。
試しに rootユーザーに切り替える。 su - 「パスワード入れて」の文字が文字化けしてる。 まず日本語対応させよう、、
adduserとかした時に1◆◆◆◆ 2◆◆◆◆◆◆...
とか返ってきて、何聞かれているか分からんし。。。
ってか初期設定周りも何もしてなかった。
まず aptitude入れる。
root userで
$ apt-get install aptitude
他にもいろいろ調べる。 http://izumii19.hatenablog.com/entry/2018/11/15/225313
2時間ほど格闘。 結局文字化けの原因は分からず。
次進もう、、日本語表記できない事が致命的になった時にやる
追記:
やっぱり気になって、せめて返却される文字だけでも知りたいから、
結局.bashrc
に「export LANG=en_US.UTF-8」ってやったら文字化け直った(英語で表示された)
ああ、adduser
は引数がいるって言ってたのか。
http://linux.derkeiler.com/Mailing-Lists/Debian/2007-06/msg01777.html
viコマンド & 1人レトロ
昨日のvim学習gameはおもしろかった。 ああいうの作る人ってほんとセンスありますね、、、
わたしはもっぱらゲームはプレイする方です。
以前darksoul3にはまって抜け出せなくなったので、最終奥義「PS4本体を売る」で、緊急脱出した経験があります。
メルカリで2万で売れました。
viコマンド学習
qiitaを参考にする
b
で戻るが、ge
でも戻れる。eとgeの連打で行ったり戻ったり!z + enter
で現在カーソル位置を画面基準値にできる!control + f / b / e / y
で画面を上下に行ったり来たり。%
でカッコ、閉じカッコ({}, [], ())へ一気に移動!- という事は、rubyとかプログラム自体はviで書くということ? 通はすごい、、
- 応用すると、
ggVG
で全選択
ciw
はcw
でもいい。1単語を削除してinsertモードにI / A
で行の先頭 / 末尾からinsertS / C
で1行削除後、現在地から末尾まで削除後にinsert
o / O
で現在地の上、下に行を追加してinsertf + 任意の文字
でその行の指定した文字へ移動J / gJ
で行の連結(visualモードで複数選択後)(スペースで区切り入れる / 入れないで連結)control + v
で矩形選択>> / <<
でインデント!r / R
でinsertモードに入らずにrewrite.- 日本語では効かない??
u / U
で大文字小文字化。~
で反転。control + P / N
で単語補完
特殊
- 数字インクリメント
control + a / x
で増やしたり減らしたり control + w s / w v
でwindow分割control + w w
でwindow移動:q
でwindow閉じる
z f
で折りたたみ(v
で選択後)space
で戻す
カーソル位置
control + o / i
で、以前、後のカーソル位置へ移動
検索
/
で検索- 検索後
* / #
で、次 / 後の該当箇所へ- いきなり
* / #
で、現在カーソル上にある単語で次 / 後検索。連打でどんどん移動 - このとき
g* / g#
とすると、部分一致で検索できる(userならuser_nameも当てられる)
- いきなり
AAA\|aaa
なら、AAAまたはaaa^\d
で数字から始まる単語検索ne\+d
でneedヒットv\ne+d
でもneed当てられる。頭に\v付ければ該当箇所に\いらず。\vgo+gle
とか。
- 検索後
置換
:s/old/new/g
で、その行全てを置換:%s/old/new/g
で、そのファイル全体。gc
なら確認を取りながら置換:100,200s/old/new/g
で、100~200行目を置換対象にする
viは合わせ技が得意
yw
で1単語コピー(pで貼り付け)gg/G
でファイルの一番上、下に移動だから、ggvG
で全選択 みたいな。
検索設定周り
- 検索してたら必要になった。
:set number / nonumber
で表示、非表示数字 + G
でその行へ移動
:set ic
で大文字小文字無視検索(ignore case)。戻すのはnoic
- 単純に毎回検索時に
/ignore\c
でも同じ事
- 単純に毎回検索時に
:set hls is
で、全検索ワードハイライト(hign light search)- 解除は
:nohlsearch
- 解除は
コマンド
:!ls
などで、viを起動しながらコマンド打てる:e + control d
でeで始まるコマンド候補を紹介してくれる
保存
:w ファイル名
で、現在ファイルを別名で保存v
で選択後、:
押して、w ファイル名
で、選択部分をファイル保存できる:r ファイル名(TEST)
で、現在のファイルに外部ファイル(TEST)のテキストを読み込む
vimtutor
- 一通り読んだあと、macのvimtutorの続きをやる。最後まで完了。
vimのプラグインをいじる
https://qiita.com/jnchito/items/5141b3b01bced9f7f48f#2-6
- vimrcファイル => run commandの略らしい
ここで、neobundleとvim plugって どっちがいいんだろう?と疑問が湧く。調べてみると、vim plugの方がかなりスターが多かったので、これを使うことにする。
- vim plug install方法を参考にvim plugを入れた。
:PlugInstall
でinstall:PlugStatus
でプラグインの状態の確認:PlugDiff
で前回からのアップデートとの変更点を表示- vim plugは記述が少ないのが、個人的にイケてるおもた。
vimrcをgitで管理
- シンボリックリンク設定 を参考に、gitでのvimrc管理を学習。
mvコマンド
ってmoveだけじゃなかった。。renameの意味もあるらしい。mv ~/.vimrc ~/dotfiles/_vimrc
lnコマンド
でシンボリックリンク設定か。なるほど。ln -s ~/dotfiles/_vimrc ~/.vimrc
これってファイルの実体はどこにあるのかな?~/.vimrcにアクセス来たら~/dotfiles/_vimrcにファイルの実体あるからそっち行ってね、って飛ばしてくれる感じかな。
- おお、リンクができたぞ。vimのプラグインもちゃんと起動した!
Rails向けのvim プラグイン
- 伊藤さんのvim プラグイン設定解説には、「vim-railsでRailsプロジェクトを便利に操作」なんて挑発的なタイトルのプラグイン紹介があって入れたくなるけど、これ系はフィヨルドでそこまで行ってからにしよう。
- とりあえずvimプラグイン入れる経験できたので、とりあえず次すすみます。
UNIX・Linux について知る
- ファイルシステム
- ディスク上のどこに何というファイルがあるのかを管理するための仕組み。DNSみたいなのかな。
- UNIXは、すべてのファイルやディレクトリがルートディレクトリから始まる。
- マウント
- 既存の該当ディレクトリに載っけて動かす
、、、
今日はここまで、明日は続きを。 というか、この「UNIX・Linux について知る」の回、めちゃ長い気がする、、 本だけでも400ページあるがな、、 2~3週間を目処にじっくりやろう
というかこのプラクティスの課題で上がってる、「新しいLinuxの教科書 」 「なか見!」で400ページほぼ全部読めますね。
編集後記:
podcastでrebuildっていうエンジニアの好きな番組があるんですけど、 その中のひろしまさんっていうぼやき担当(個人的に好き)の人がいて、この人が
「作りたいのがないのにプログラミングやりたいとか意味わからない」 って発言してたんですよね。
このフレーズ、ずーっと今までいろんなとこで聞いてきたんですけど、 自分は特に作りたいのないんですよね、、
いや、厳密にいうとあるんですけど、作ろうと思って調べると、すでに世の中にあるんですよ。
「ああ、もうあるのか」ってわかると、途端に作る気がなくなるんですよ、、 そういう人いません?
こういう時、なんとかオリジナル感出そうとしていろいろ考えるんですけど、 作るコスト考えたら、既存のサービス使ったらすぐに目的達成できるやんって思っちゃうんすよ。。
こないだも、会社のサーバーが攻撃食らったって話を聞いたから 「サーバー攻撃がいまどこで起こってるか知れるみたいなサービスがあったらおもろいな。なんなら世界中で!」
なんて思いついて、こういう場合、作るにはなにが必要なのかな〜、 そういう情報発信してるサイトがあって、apiとか提供してないかな〜
なんてワクワクするんですけど、ネットを探すと
すでにあるんすよ。しかも予想をはるかに上回る質で、すでに。
これトラウマで、毎回「何か作ってみたい」って調べると、ほぼ全てすでにあります。
作りたいって感情よりも、「すでにあるなら、それを使えばええがな」「その方が時短やがな」って考えるのは、生粋のエンジニアにはなれないのではないか、、
「特に作りたいのがない」のは、エンジニアになる資格がないのではないか、、
私はずっと悩んでおります。
今日これで悩んで半日おわった(:3 」∠)
追記: 会社が「こういう仕組み欲しい!」って言ってきた時は一気にテンション上がってやる気になります。 問題解決が第一なんですよね。その一点にフォーカスしてます。 ただ、目的を達成するのが目的で、作る過程を楽しむとかじゃないです。達成できたら楽しく思えますけど。
だけど、一緒に仕事してたプログラマの先輩は全く逆でした。過程が楽しくて、結果はあまり気にしてませんでした。
わたし個人としては、この先輩の方がエンジニアに向いてる気がしてならないのです
、、、
なんて、今まで何度も考えてきた事を、ひろしまさんの発言聞いて思い出しました。
もう気持ちの整理はついてるんですけどね(:3 」∠)