【Raspberry Pi 】TeraTermアクセスをSSH公開鍵方式で行う

セキュリティ向上のため、SSHアクセスを公開鍵方式に変更します。

 

1.公開鍵、秘密鍵の作成

公開鍵はTeraTermで作ります。sshdで作れるらしいけど、CUIで面倒なので。

メニューから「設定」→「SSH鍵生成」

f:id:engetu21:20141122231826j:plain

 

パスフレーズを入れます。無論長くて複雑であればあるほどいい。

f:id:engetu21:20141122231835j:plain

 

パスフレーズを入れたら、公開鍵をまず作ります。

→id_rsa.pubというファイルが作られるので、ローカルの適当なところに置きます。

f:id:engetu21:20141122232130j:plain

 

秘密鍵も作ります。

→id_rsaというファイルが作られるので、これもローカルの適当なところに置きます。

f:id:engetu21:20141122232250j:plain

 

2.サーバへの公開鍵の設置

作成した公開鍵(id_rsa.pub)をサーバに転送します。転送方法はWinSCPを使うなり、Teratermの設定から「ファイル」→「SSH SCP」から実施するなり。

 

公開鍵をホームディレクトリの.ssh配下に置きます(名前もauthorized_keysに変更)。

ホームディレクトリ配下に.sshがあるかはls -laコマンドでわかります。なければ作成した上で.ssh配下に置きます。

$ls -la

$mkdir .ssh

$mv id_rsa.pub .ssh/authorized_keys

※2017/2/19追記

なお、公開鍵の権限は600にしないといけないらしい

$chmod 600 .ssh
$mkdir .ssh/authorized_keys

 

3.sshdの設定ファイルを変更

以下のように変更します。

$ sudo vi /etc/ssh/sshd_config

RSAAuthentication yes コメントアウトされていたら解除

→上記項目は削除されたため、対応は不要(2022/7/3追記)
PubkeyAuthentication yes コメントアウトされていたら解除して「yes」
AuthorizedKeysFile     %h/.ssh/authorized_keys コメントアウト解除して、keyの場所を指定

 

#PasswordAuthentication yes ←パスワード認証ログインの有効/無効のパラメータ

↓ コメントアウトを解除し、かつnoに変更

PasswordAuthentication no

 

この後、一度再起動します。

$sudo shutdown -r now 

 

4.TeraTermからの秘密鍵によるログイン

ログインメニューの変更を実施し、保存しておきます。

メニューから「設定」→「SSH認証」

f:id:engetu21:20141123003408j:plain

秘密鍵は1の手順で作ったものを指定します。

入力が完了し、OKを押したあとは、設定変更を忘れずに。

メニュー「設定」→「設定の保存」

 

あとは、ログイン時にパスフレーズを入れれば公開鍵方式でログインできるようになります。

【Raspberry Pi】Vimで開くときに色を付ける

ラズパイはデフォルトではVi(Vim)でファイルを開いても色がついていません。シェルスクリプト編集がしやすくなるように変更します。

そもそもvimがインストールされていない可能性があるため、まずはインストールします。

$ sudo apt-get install vim

 

Vimの設定ファイルは以下にありますが、syntax onのコメントアウトを解除します。

$ sudo vi /etc/vim/vimrc

"syntax on

syntax on

 

ユーザ毎で独自にしたい場合は、ユーザローカルにコピーしてから弄ります。

$ sudo cp /etc/vim/vimrc ~/.vimrc

$ sudo vi ~/.vimrc

 

【Raspberry Pi】ユーザの追加とそのユーザにsudo実施できるようにする

デフォルトのpiユーザ以外を使いたいので、ユーザ追加をします。

 

1.ユーザの作成とsudo権限の付与

$sudo adduser hogehoge

ユーザー `hogehoge' を追加しています...
新しいグループ `hogehoge' (1001) を追加しています...
新しいユーザー `hogehoge' (1001) をグループ `hogehoge' に追加しています...
ホームディレクトリ `/home/hogehoge' を作成しています...
`/etc/skel' からファイルをコピーしています...

新しい UNIX パスワードを入力してください:(パスワードを入力)
新しい UNIX パスワードを再入力してください:(もう一回入力)
passwd: password updated successfully
Changing the user information for hogehoge
Enter the new value, or press ENTER for the default
        Full Name :(特に入力する必要がなければそのままEnter)
        Room Number
:(同上)
        Work Phone :(同上)
        Home Phone
:(同上)
        Other []:(同上)
以上で正しいですか? [Y/n] y

 

ついでにsudoできるようにグループに追加します。

$ sudo gpasswd -a hogehoge sudo
ユーザhogehogeをグループ sudo に追加

 

また、プロンプトを日本語にする場合は以下のように設定

$ cd ~/

$ vi .profile

export LANG=ja_JP.UTF-8 ←これを追加

2.sudo権限の削除とユーザ削除

sudo権限を削除する場合は以下のとおり

$ sudo gpasswd -d hogehoge sudo

ユーザ hogehoge をグループ sudo から削除

 

また、既存のユーザでパスワードなしのsudoを実施させない場合は、以下のようにします(例として、piの設定を変更します)。

 $ sudo vi /etc/sudoers

pi ALL=(ALL) NOPASSWD: ALL

↓コメントアウト

#pi ALL=(ALL) NOPASSWD: ALL

 

ユーザの削除は以下のとおり。

ホームディレクトリも削除する場合は、オプション-rを付与する。

 $ id -a hogehoge
uid=1001(hogehoge) gid=1001(hogehoge) groups=1001(hogehoge)

 

$ sudo userdel -r hogehoge

 

$ id -a hogehoge
id: hogehoge: no such user

 

【Raspberry Pi】SoftEtherでVPN

Raspberry Pi Model B+」を買いました。

Raspberry Pi Model B+ (Plus)

Raspberry Pi Model B+ (Plus)

 

 

SoftEtherについては、以前LIVAでインストールしたまま放置してましたが、このラズパイに再度インストールした上でVPNを実現します。

 

Raspberry Pi でSoftEther VPN 1.0 RC2を試す | よもやま雑記帳

を参考にさせていただきました。

なお、今回はwgetによるダウンロードではなく、直接HPからダウンロードしています。ラズパイの場合はSofEtherはOS: Linux、CPU: ARM EABI (32bit)を選択します。

 

※セッティング方法を書こうと思いましたが、上記参考サイトとまるっきり同じなので割愛(手抜き)

 

注意点①

VPNサーバにするラズパイはLinuxルータを通したローカルネットワークの中で動作しています。

なので、Linuxルータのiptablesの設定でVPNアクセスを転送してあげなければなりません。というわけで、iptablesを設定するシェルスクリプトの記載を抜粋すると

IPTABLES='/sbin/iptables'

WAN='ppp0' # 外部インタフェース

 

#-------------------------#
# VPN接続からの接続を許可 #
#-------------------------#

$IPTABLES -t nat -A PREROUTING -i $WAN -p tcp --dport 443 -j DNAT --to 192.168.0.81:443
$IPTABLES -t nat -A PREROUTING -i $WAN -p udp --dport 500 -j DNAT --to 192.168.0.81:500
$IPTABLES -t nat -A PREROUTING -i $WAN -p udp --dport 1701 -j DNAT --to 192.168.0.81:1701
$IPTABLES -t nat -A PREROUTING -i $WAN -p udp --dport 4500 -j DNAT --to 192.168.0.81:4500

 

$IPTABLES -A FORWARD -i $WAN -p tcp --dport 443 -d 192.168.0.81 -s xxx.xxx.0.0/16 -j ACCEPT
$IPTABLES -A FORWARD -i $WAN -p udp --dport 500 -d 192.168.0.81 -s xxx.xxx.0.0/16 -j ACCEPT
$IPTABLES -A FORWARD -i $WAN -p udp --dport 1701 -d 192.168.0.81 -s xxx.xxx.0.0/16 -j ACCEPT
$IPTABLES -A FORWARD -i $WAN -p udp --dport 4500 -d 192.168.0.81 -s xxxx.xxx.0.0/16 -j ACCEPT

 PREROUTINGでルータで受け取った443ポート等の通信を192.168.0.81(ラズパイのIPアドレス)に透過させるようにします。

ただし、PREROUTINGの後に動作するFORWARDの記載では、-sオプションで特定のIPアドレス帯域からの通信のみを許容するようにしてアクセス制限をします。

私の場合は格安SIMを入れたAndroidからVPNを貼りたいため、SIMを提供している会社が払い出すIPアドレス帯域を事前に調べ、その帯域のみからアクセスを許容する形にしています。フルオープンは危険なのでやめましょう。

ちなみにiptablesは送信元をドメイン指定することも可能なので、いずれはAndroidでDynamicDNSクライアントでドメイン自動更新→そのドメインのみのアクセスを許容、という形を取る予定です。

 

注意点②

iptablesの設定が完了してもアクセス出来ない場合。

SoftEtherのログ(security_log/VPN/sec_2014xxxx.log)で「VPNクライアントの IP アドレスがまだ決定されていないにもかかわらず、VPNクライアントが通信を行おうとしました」とでていたら、仮想DHCPを設定しないとダメらしいです。

f:id:engetu21:20141122195926j:plain

 

 

f:id:engetu21:20141122195942j:plain

 

警告が出るけど気にしない

f:id:engetu21:20141122195948j:plain

 

SecureNATの設定に入り、仮想DHCPサーバの設定にチェック

f:id:engetu21:20141122195936j:plain

【追記】

ちなみに、この状態だと、ラズパイ自身が自分をネットワーク上で認識する事ができないので、以下のサイトを参考に設定を変更する必要がある。

SoftEther VPN 1.0 RC2でtapデバイスを試す | よもやま雑記帳

 

※2017/7/8追記

上記サイトのtapデバイス設定ですが、Raspbianのバージョンが上がったことでIPアドレスの設定先そのものが変わりました。

/etc/network/interfacesから/etc/dhcpcd.confです。

従来通りに/etc/network/interfacesで設定する必要がある場合は、/etc/dhcpcd.confの設定内容を変更します(コメントアウトするだけ)

$sudo vi /etc/dhcpcd.conf

#interface eth0
#static ip_address=192.168.11.xx/24
#static routers=192.168.11.xx
#static domain_name_servers=xxx.xxx.xxx.xxx

その後、/etc/network/interfacesの設定を変えます。

$sudo vi /etc/network/interfaces

auto eth0

auto br0
iface br0 inet static
address 192.168.11.xx
netmask 255.255.255.0
network 192.168.11.0
broadcast 192.168.11.255
gateway 192.168.11.xx
bridge_ports eth0
bridge_maxwait 10

 

自動実行の設定方法もこちらで

$sudo vi /etc/systemd/system/vpnserver.service

[Unit]
Description=SoftEther VPN Server
After=network.target network-online.target

[Service]
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop
Type=forking
RestartSec=3s

[Install]
WantedBy=multi-user.target

 

サービスの読み込みと自動実行化

$sudo systemctl daemon-reload

$sudo systemctl enable vpnserver.service

 

 

【LIVA】【Ubuntu server14.04】Juliusを使いたい(Juliusセッティング完了編)

~前回のあらすじ~

JuliusをセットアップしたらOSSとしてセットアップされたためにいろいろ頑張ったけどダメだったよ。

 

1.configureでALSAを指定してみる

そもそもOSSとしてではなくALSAで実行できればいいのではないかと、原点に立ち戻ります。Juliusのオンラインマニュアルを見ると「 --with-mictype=」で変更が可能の模様。

 $ ./configure --with-mictype=alsa

(略)

configure: error: no ALSA header!
configure: error: ./configure failed for libsent

 ダメでした・・・。

色々探ってみると、海外の掲示板にて同様の状態になっている書き込みを発見し、

「HAHAHA,俺もHPから落としたソースコードからconfigureしたらダメだったけど、CVSで落とした奴だったらうまくいったぜ!」

という書き込みを見かけたため、今度はCVSで落としてみました。

$ cvs -z3 -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/julius co julius4

 

$ ./configure  --with-mictype=alsa

(略)

****************************************************************
Julius/Julian libsent library rev.4.3.1:

- Audio I/O

    primary mic device API   : alsa (Advanced Linux Sound Architecture)
    available mic device API : alsa
    supported audio format   : various formats by libsndfile ver.1
    NetAudio support         : no
- Language Modeling
    class N-gram support     : yes
- Libraries
    file decompression by    : zlib library
- Process management
    fork on adinnet input    : no
 
  Note: compilation time flags are now stored in "libsent-config".
        If you link this library, please add output of
        "libsent-config --cflags" to CFLAGS and
        "libsent-config --libs" to LIBS.
****************************************************************

うまくいきました!

というわけで、make後、juliusを実行してみます。

$ ./julius/julius -C ../dictation-kit-v4.3.1-linux/main.jconf -C ../dictation-kit-v4.3.1-linux/am-gmm.jconf -demo -input mic

(略)

 

ALSA lib pcm_direct.c:998:(snd1_pcm_direct_initialize_slave) unable to install hw params
ALSA lib pcm_dsnoop.c:629:(snd_pcm_dsnoop_open) unable to initialize slave
Error: adin_alsa: cannot open PCM device "default" (Input/output error)
failed to begin input stream

エラー内容が変わりました。が、起動はせず・・・。

 

2.ALSADEVの設定

環境変数ALSADEVにハードウェアを設定しなければいけないらしく、もしかしたらそれが原因かと思い、設定します。

$ sudo arecord -l
**** ハードウェアデバイス CAPTURE のリスト ****
カード 0: Device [USB Audio Device], デバイス 0: USB Audio [USB Audio]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0
カード 1: PCH [HDA Intel PCH], デバイス 0: ALC282 Analog [ALC282 Analog]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0

arecord -lでALSAで認識しているデバイスが取得できます。

今回使用しているUSBマイクはカード0。LIVAでもともとあるオーディオ端子はカード1です。

USBマイクを環境変数ALSADEV設定するには

export ALSADEV="plughw:0,0"

と設定します。0,0はそれぞれ「カード番号,サブデバイス番号」を意味します。

 で、実行した結果

Stat: adin_alsa: device name from ALSADEV: "plughw:0,0"
Stat: capture audio at 16000Hz
Stat: adin_alsa: latency set to 32 msec (chunk = 512 bytes)
Error: adin_alsa: cannot set PCM hardware parameters (Input/output error)

途中まではうまくいきましたが、やはりダメ・・・。

 

3.そしてJulius起動へ

エラー原因は結局わからず。しかし解決方法はわかりました。

USBマイクを外してもう一度接続します。

そうするとなぜかエラーが出ません。

しかし、一度Juliusを終了し、もう一度Julius起動すると同じエラーが出ます・・・謎。

 

$ ./julius/julius -C ../dictation-kit-v4.3.1-linux/main.jconf -C ../dictation-kit-v4.3.1-linux/am-gmm.jconf -demo -input mic

(略)

Stat: capture audio at 16000Hz
Stat: adin_alsa: current latency time: 21 msec
Stat: adin_alsa: current latency (21ms) is shorter than 32ms, leave it
Stat: "default": Device [USB Audio Device] device USB Audio [USB Audio] subdevice #0
STAT: AD-in thread created
<<< please speak >>>
Warning: strip: sample 0-340 is invalid, stripped
Warning: strip: sample 0-340 is invalid, stripped
Warning: strip: sample 0-340 is invalid, stripped

(以下延々とWarningが発生)

念願の<<< please speak >>>がでました。

ただし、Warningが発生しているため、これを出ないように-nostripオプションを設定します。(Warningの原因は謎・・・)

【追記】

「MM-MCUSB22」というUSBマイクはマイク自体にミュートボタンが付いているのですが(会議用マイクだからね)、ミュート状態だとエラーが出るようです。ミュートを解除したらWarningが出なくなりました

$ ./julius/julius -C ../dictation-kit-v4.3.1-linux/main.jconf -C ../dictation-kit-v4.3.1-linux/am-gmm.jconf -demo -input mic -nostrip

(略)

Stat: adin_alsa: device name from ALSADEV: "plughw:0,0"
Stat: capture audio at 16000Hz
Stat: adin_alsa: latency set to 32 msec (chunk = 512 bytes)
Stat: "plughw:0,0": Device [USB Audio Device] device USB Audio [USB Audio] subdevice #0
STAT: AD-in thread created
<<< please speak >>>

 起動出来ました!

音声入力してみます。

※ 「こんにちは。今日はいい天気でした。」を言った場合。「今日はいい天気でした」は何回か発言しなおしてみたら以下のとおり。

pass1_best: 今日 は 、
sentence1: こんにちは 。
pass1_best: 今日 も あり 天気 でし た 。
sentence1: 今日 も いい 天気 でし た 。
pass1_best: 距離 的 でし た 。
sentence1: 今日 は いい 天気 でし た 。

「 距離 的 でし た 。」→「今日 は いい 天気 でし た 。」への文章解釈は驚愕ですが、結構認識してくれますね。

【LIVA】【Ubuntu server14.04】Juliusを使いたい(Juliusセッティング悪戦苦闘編)

USBマイクのセッティングは終わったため、Juliusセッティングをします。

 

1.Juliusのセットアップ

以下のサイトからソースファイルをダウンロードします。

http://sourceforge.jp/projects/julius/downloads/60273/julius-4.3.1.tar.gz/

※後述しますが、ここからの方法はなぜかうまく行きませんでした。

 

①解凍の実行

$tar zxvf julius-4.3.1.tar.gz

②configureコマンドの実行

$cd julius-4.3.1

$ ./configure

(略)

****************************************************************
Julius/Julian libsent library rev.4.2.3:

- Audio I/O
    primary mic device API   : oss (Open Sound System compatible)
    available mic device API : oss
    supported audio format   : RAW and WAV only
    NetAudio support         : no
- Language Modeling
    class N-gram support     : yes
- Libraries
    file decompression by    : zlib library
- Process management
    fork on adinnet input    : no

  Note: compilation time flags are now stored in "libsent-config".
        If you link this library, please add output of
        "libsent-config --cflags" to CFLAGS and
        "libsent-config --libs" to LIBS.
****************************************************************

primary mic device API   : oss となっています。Juliusのマニュアルを見ると、configureを実行すると通常はalsaが最初に選択されるらしいが、何故かUbuntuでは使われていないossが選択されます。

これが後々の悪戦苦闘に続きます。

 

補足:OSSとは?

Open Sound System のことであり、Ubuntuではすでに使われていないサウンドシステムであり、現在はALSAが標準で使われています。

ただ、古いソフトではOSSで動かすものもある。その場合はALSAossエミュレートすることで実行することができます。(後述)

 

③makeの実行

$ make

何事もなければ、そのまま終了します。

 

2.実行、そして失敗へ

実行をします。が、その前にdictation-kitを事前にダウンロードする必要があります。

http://sourceforge.jp/projects/julius/downloads/60416/dictation-kit-v4.3.1-linux.tgz

$ tar dictation-kit-v4.3.1-linux.tgz

juliusを実行します。

 $./julius -C dictation-kit-v4.3.1-linux/main.jconf -C ../../dictation-kit-v4.3.1-linux/am-gmm.jconf -demo -charconv utf-8 euc-jp -input mic

 

Stat: adin_oss: device name = /dev/dsp (application default)
Error: adin_oss: failed to open /dev/dsp
failed to begin input stream

はい、失敗しました。

実のところ、Ubuntuには/dev/dspがありません。そのため、実行できないので失敗します。

そのため、ALSAOSSエミュレータを利用して実行します。

 $padsp ./julius -C dictation-kit-v4.3.1-linux/main.jconf -C dictation-kit-v4.3.1-linux/am-gmm.jconf -demo -charconv utf-8 euc-jp -input mic

Stat: adin_oss: device name = /dev/dsp (application default)
Error: adin_oss: failed to open /dev/dsp
failed to begin input stream

 padspを先頭につけると、OSSエミュレータによる実行ができます。他の参考サイトを見るとこれで出来ているようですが、私の環境では失敗でした・・・。

ちなみにaossコマンドでもダメでした。

 $aoss ./julius -C dictation-kit-v4.3.1-linux/main.jconf -C dictation-kit-v4.3.1-linux/am-gmm.jconf -demo -charconv utf-8 euc-jp -input mic 

 

ということで、あれこれ調べてみたところosspdを使えば良い、という情報を見つけました。


第299回 UbuntuでOpen Sound Systemアプリケーションを簡単に使う方法:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社

 

・・・が、これも結局juliusは起動しませんでした。

インストールは無事完了し、サーバ再起動後に確認するとサービス登録も問題なく完了。

$ service --status-all

(略)
[ + ]  osspd

 

osspdのお陰で/dev/dspは出来ましたが、エラー内容は同じ。

やはりダメなのかと心折れそうになるが・・・

 

(続く)

 

【LIVA】【Ubuntu server14.04】Juliusを使いたい(USBマイクセッティング編)

家電を音声で操る、という魅力的なテーマに挑戦したく、Juliusのセッティングに着手しましたが、事の顛末を記載しておきます。

 

1.Juliusとは

 詳しくはこちら。

大語彙連続音声認識エンジン Julius

発音辞書や言語モデル・音響モデルと組み合わせることで、特定の音声に対して色々動作をさせることができます。

 

2.下準備

マイクを用意します。

今回買ったのは「MM-MCUSB22」。部屋のどこからでも家電を操るとなると可能な限り集音が必要になりますので。

 

サンワサプライ WEB会議高感度USBマイク MM-MCUSB22

サンワサプライ WEB会議高感度USBマイク MM-MCUSB22

 

 

USBマイクのセッティングとして、以下のように対応します。 

①デバイスの確認

$sudo lsusb

Bus 001 Device 005: ID 0d8c:0010 C-Media Electronics, Inc.

(略)

Bus001 Device 002: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB

(略)

LIVAのUSBポートは2つありますが、今回はUSBハブにUSBマイクを設定しているため、上記のような出力になります(Device005がMM-MCUSB22)。

 

※2017/1/29追記

現在はラズパイ2で動かしていますが、その場合はUSBマイクを接続すると以下のようにオーディオモジュールが追加される。

$cat /proc/asound/modules 

0 snd_bcm2835
1 snd_usb_audio

この snd_usb_audioを0になるように変更する必要がある。

 

②USBマイク優先度の変更

$sudo vi /etc/modprobe.d/alsa-base.conf

options snd-usb-audio index=-2

options snd-usb-audio index=0

USBマイクの優先度が高くなるように、snd-usb-audioを0に変更します。

 

※2017/1/29追記

どうやら、ラズパイ2だと上記ファイルがないため作ります。以下のように作成。

$sudo vi /etc/modprobe.d/alsa-base.conf

options snd slots=snd_usb_audio,snd_bcm2835

options snd_usb_audio index=0

options snd_bcm2835 index=1

 

優先度を変更したら一度再起動します。

$sudo shutdown -r now 

 

③優先度の変更を確認

$cat /proc/asound/modules

 0 snd_usb_audio
 1 snd_hda_intel

0 snd_usb_audioとなっていれば成功。

 

④マイクの音量を変更

$sudo amixer set Mic 54

Simple mixer control 'Mic',0
  Capabilities: cvolume cvolume-joined cswitch cswitch-joined
  Capture channels: Mono
  Limits: Capture 0 - 57
  Mono: Capture 54 [95%] [18.52dB] [off]

環境によって違うと思われますが、私のマシンでは最大設定値は57だそうです。

 

⑤録音できるか確認

$sudo arecord -r 16000 -f S16_LE test.wav

止めるときはCtrl+Cで(多分)。

 

 ⑥再生できるか確認

$ aplay ./test.wav

 

※2017/05/06追記

バイスをちゃんと指定しておかないとaplayでファイル再生ができなくなったりするようなので、以下の対応を実施。明確にalsaで使うデバイスを指定する。

$ sudo aplay -l

**** ハードウェアデバイス PLAYBACK のリスト ****
カード 1: ALSA [bcm2835 ALSA], デバイス 0: bcm2835 ALSA [bcm2835 ALSA]
サブデバイス: 7/7
サブデバイス #0: subdevice #0
サブデバイス #1: subdevice #1
サブデバイス #2: subdevice #2
サブデバイス #3: subdevice #3
サブデバイス #4: subdevice #4
サブデバイス #5: subdevice #5
サブデバイス #6: subdevice #6
カード 1: ALSA [bcm2835 ALSA], デバイス 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
サブデバイス: 1/1
サブデバイス #0: subdevice #0

 

$ sudo arecord -l

**** ハードウェアデバイス CAPTURE のリスト ****
カード 0: Device [USB Audio Device], デバイス 0: USB Audio [USB Audio]
サブデバイス: 1/1
サブデバイス #0: subdevice #0

 

上記の情報をもとにホームディレクトリ配下の.asoundrcを編集(記述場所はどこでもよさそうだけど、最初に記述)。

hw:X,Yの設定は、Xがカード番号、Yがデバイス番号です。

$ vi ~/.asoundrc

pcm.!default {
    type asym
    capture.pcm "mic"
    playback.pcm "speaker"
}

pcm.mic {
    type plug
    slave {
        pcm "hw:0,0"
    }
}

pcm.speaker {
    type plug
    slave {
    pcm "hw:1,0"
    }
}